【发布时间】:2018-06-26 02:26:55
【问题描述】:
我有一个我已经使用了一段时间的动态组件。现在我想在其模型中添加一个“Observable”,以便我可以从组件外部触发更改。所以我有一个服务(组件外部):
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: Type '{ (removed): ({ component: typeof (removed) 是 不可分配给类型“LayoutHeader”。财产类型 “sideNavToggleSubjectTrigger”不兼容。类型 'Observable' 不可分配给类型 'Observable'。二 存在具有此名称的不同类型,但它们是不相关的。财产 “源”在“可观察”类型中受保护,但在类型中是公共的 “可观察”。
注意:我确实删除了上面一些不相关的文本(为了清楚起见,我删除了 LayoutHeader 类的其他成员)。我认为主要的错误/问题是 Observable 的两个定义不匹配。但我不知道为什么。
【问题讨论】:
-
检查可观察的导入。
-
@cgTag - 我做到了。在这两种情况下,它们都是: import { Observable } from "rxjs/Observable";但是,可能是我的动态加载的组件对 rxjs 有“^5.5.8”,而主项目有“5.5.6”。我会尽量让它们都一样。
标签: angular