[英]How to define a “global” variable in a component? (Angular4)
我有一個app-editor-component
,它的結構中包含很多嵌套的組件。 加載組件后,它將創建一個數組: obj_list : MyObject[]
許多嵌套組件將包含一個<select>
元素,其中必須在每個obj_list
中選擇一個元素。
如何與結構中的所有元素共享此列表?
幾個嵌套組件共享的實體應該是服務。 這自然是由Angular分層注射器提供的。
更重要的是,如果應該異步更改數據,則應以某種方式通知組件。 這可以通過RxJS observables方便地完成:
import { Subject } from 'rxjs/Subject';
@Injectable()
class Foo {
objListSubject = new Subject();
objList$ = this.objListSubject.asObservable();
}
@Component({
providers: [Foo] // belongs to NgModule providers if the service is global
...
})
class ParentComponent {
constructor(private foo: Foo) {
...
this.foo.next(['bar']);
}
}
@Component({
template: `
<select ...>
<option *ngFor="foo.objList$ | async">
</select>
`,
...
});
class ChildComponent {
constructor(public foo: Foo) {}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.