Javascript 如何定义一个;“全球”;组件中的变量?(四)
我有一个Javascript 如何定义一个;“全球”;组件中的变量?(四),javascript,angular,Javascript,Angular,我有一个appeditor组件,它的结构中包含许多嵌套组件。加载组件时,它会创建一个数组:obj\u list:MyObject[] 许多嵌套组件将包含一个元素,其中必须在每个组件中选择对象列表中的一个元素 如何与结构中的所有元素共享此列表?在嵌套组件之间共享数据的一种方法是Input/Output+EventEmitter系统 或者,您可以使用共享服务在组件之间传输数据。 以下是firebase关于组件交互的官方文档和好帖子的链接: 例如,在您的情况下,您可以通过Inputs将obj_li
appeditor组件
,它的结构中包含许多嵌套组件。加载组件时,它会创建一个数组:obj\u list:MyObject[]
许多嵌套组件将包含一个
元素,其中必须在每个组件中选择对象列表中的一个元素
如何与结构中的所有元素共享此列表?在嵌套组件之间共享数据的一种方法是Input/Output+EventEmitter系统
或者,您可以使用共享服务在组件之间传输数据。
以下是firebase关于组件交互的官方文档和好帖子的链接:
例如,在您的情况下,您可以通过Input
s将obj_list
从app editor component
传递到子组件,然后在子组件中观察
的更改事件,并将更改发送回app editor component
但是,如果您有深层嵌套,使用服务是更好的方法多个嵌套组件共享的实体应该是服务。这自然是由角度分层喷油器提供的
更重要的是,如果数据应该以异步方式更改,那么应该以某种方式通知组件。这可以通过RxJS观测值方便地实现:
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) {}
}
从'rxjs/Subject'导入{Subject};
@可注射()
福班{
objListSubject=新主题();
objList$=this.objListSubject.asObservable();
}
@组成部分({
提供者:[Foo]//如果服务是全局的,则属于NgModule提供者
...
})
类ParentComponent{
构造函数(私有foo:foo){
...
this.foo.next(['bar']);
}
}
@组成部分({
模板:`
`,
...
});
类子组件{
构造函数(公共foo:foo){}
}
我对angular不太熟悉,但您不能使用依赖项注入吗?