1
組件是否可以根據其輸入提供服務(或可提供的服務)?在我的情況下,我的組件使用基於另一個Firebase服務的服務,並且我希望組件爲子組件提供新的Firebase服務,因此其他服務將只訪問db中的子部件。提供角度2組件變量
在我當前的解決方案中,我的組件調用服務的setChild函數來設置子項,但我很好奇,如果可以按上述方式。
感謝, 塔馬斯
組件是否可以根據其輸入提供服務(或可提供的服務)?在我的情況下,我的組件使用基於另一個Firebase服務的服務,並且我希望組件爲子組件提供新的Firebase服務,因此其他服務將只訪問db中的子部件。提供角度2組件變量
在我當前的解決方案中,我的組件調用服務的setChild函數來設置子項,但我很好奇,如果可以按上述方式。
感謝, 塔馬斯
不,那是不可能的。當裝飾器參數被評估時,沒有組件的實例。
您可以做的是將服務注入到添加到提供者的組件中,並將該值傳遞給服務。當一個孩子也注射了同樣的服務,它們共享相同的值:
@Injectable()
class MyService {
...
}
@Component({
selector: 'parent',
template: 'x'
providers: [MyService],
)}
class Parent {
@Input() someInput;
constructor(private myService:MyService) {
}
ngOnChanges() {
this.myService.sharedValue = this.someInput;
}
}
@Component({
selector: 'descendant',
template: 'x'
)}
class Descendant {
constructor(myService:MyService) {
myService.sharedValueChange.subscribe(val => {
console.log(val);
});
}
}
有關使用Observable
通知有關變化看Delegation: EventEmitter or Observable in Angular2
非常感謝您的回答創建一個共享服務的更多細節。我會這樣做。 – bucicimaci