带有角动态组件加载的模型中的Observable错误

时间:2018-06-25 17:32:54

标签: angular

我有一个动态组件已经使用了一段时间了。现在,我想在其模型中添加一个“可观察的”,以便可以从组件外部触发更改。因此,我有一个服务(在组件外部),具有:

  public menuToggleSubject = new Subject<any>();
  public menuToggleSubjectTrigger: Observable<any> = this.menuToggleSubject.asObservable();

  public toggleMenu() {
    this.menuToggleSubject.next();
  }

在我的组件模型中,我拥有:

export class LayoutHeader {
    constructor(public sideNavToggleSubjectTrigger: Observable<any>
    ) {}

然后,在我要加载动态组件的组件中,我有:

this.item = { sideNavToggleSubjectTrigger: this.siteService.menuToggleSubjectTrigger };

但是,出现以下错误:

  

错误TS2322:类型'{(已删除):({组件:typeof(已删除)是   不可分配给“ LayoutHeader”类型。财产种类   “ sideNavToggleSubjectTrigger”不兼容。类型   无法将“可观察”分配给“可观察”类型。二   存在具有此名称的不同类型,但是它们是无关的。属性   “源”以“可观察”类型保护,但以类型公开   “可观察”。

注意:我确实删除了一些不相关的文本(为清晰起见,我删除了LayoutHeader类的其他成员)。我认为主要的错误/问题是Observable的两个定义不匹配。但是我不知道为什么。

1 个答案:

答案 0 :(得分:0)

我对cgTag的回答是正确的,即动态加载的组件中的rxjs和该组件的主机必须为同一版本。一旦将两个package.json都更新为相同的版本,一切就很好了。我是对的,但我不喜欢它:),因为这会创建一个非常脆弱的链接。如果有人知道解决方法,请告诉我。 I plan on asking a separate SO question for this