【发布时间】:2017-12-20 02:57:33
【问题描述】:
我有一个父 AppComponent 和另一个名为“ChildComponent”的组件。它们都共享一个名为“appState”的服务,该服务被注入两者(我使用的是https://github.com/AngularClass/angular-starter,app.service.ts 类在这里是https://github.com/AngularClass/angular-starter/blob/master/src/app/app.service.ts,这是我所指的appState)。
ChildComponent 有自己的属性“mylist”,它是一个对象数组,设置为等于 this.appState.mylist。
@Component(...)
export class ChildComponent {
mylist = any;
constructor(@Inject(AppState) appState) {
public appState = appState;
mylist = appState.state.mylist;
}
}
我有一个显示 {{mylist}} 的 ChildComponent 模板
ParentComponent 有一个模板,该模板有一个“添加我”按钮,其唯一功能是添加到 this.appState.mylist。
我的问题是,当我点击父组件上的“添加我”按钮时,我在函数中记录了 this.appState.mylist。
@Component(...)
export class AppComponent {
constructor() {
public appState = appState;
appState.mylist = [];
}
addMe() {
this.appState.state.mylist.push({"itemName":"Something"});
console.log(this.appState.mylist) // this outputs correctly and I see mylist growing
}
}
我了解了 eventEmitters 如何发出事件来更新父级,但就我而言,我想更新 AppComponent 模板中的一个组件。怎么了?如何使 child.component.html 中的“mylist”显示正确的数据?
我看到的所有文档似乎都在谈论从子到父通信的 EventEmitters,这似乎对我不起作用,因为我试图从我的父 AppComponent 到子 ChildComponent 进行通信。
问题plunkr: https://plnkr.co/edit/xaE905r4xNZcVJzWQwsr?p=preview
【问题讨论】:
标签: angular