Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript Ngrx:类型“存储”错误中缺少属性“[Symbol.observable]”_Typescript_Ngrx_Strictnullchecks - Fatal编程技术网

Typescript Ngrx:类型“存储”错误中缺少属性“[Symbol.observable]”

Typescript Ngrx:类型“存储”错误中缺少属性“[Symbol.observable]”,typescript,ngrx,strictnullchecks,Typescript,Ngrx,Strictnullchecks,我在Angular v5应用程序中使用了NGRX v4.1.1,并带有strictNullChecks:true,但这似乎无关紧要 我看到商店出了差错。鉴于以下情况: showLists: Observable<boolean>; constructor(private store: Store<State>) {} ngOnInit() { this.showLists = this.store.select('contactsFeature', 'contac

我在Angular v5应用程序中使用了NGRX v4.1.1,并带有strictNullChecks:true,但这似乎无关紧要

我看到商店出了差错。鉴于以下情况:

showLists: Observable<boolean>;

constructor(private store: Store<State>) {}

ngOnInit() {
  this.showLists = this.store.select('contactsFeature', 'contactsReducer', 'showListsPanel');
}
使用。选择并将其分配给Observable类型的变量的这种方法实际上是我看到他们已经将文档更新为ngrx v5推荐的API,但v5尚未发布,因此我链接到了下一个最新版本的文档

问题在于store.select的返回类型store与Observable不兼容

然而,我认为这是与商店互动的“官方”方法。所以我想知道出了什么问题。如果禁用strictNullChecks,仍然会遇到错误。这个错误出现在一个我离开一个月后回来的项目中,很明显,我无法确定它是什么时候开始的,或者为什么

欢迎您提出以下建议:

PS:Typescript不允许我将返回的.select转换为可观察的

使现代化 更新npm为我提供了更好的错误消息。看起来要么rxjs的界面已经更新,要么ngrx的界面已经更新

ERROR in apps/coordination/src/app/contacts/contacts-tools.component.ts(21,5): error TS2322: Type 'Store<boolean>' is not assignable to type 'Observable<boolean>'.
  Types of property 'subscribe' are incompatible.
    Type '{ (observer?: NextObserver<boolean> | ErrorObserver<boolean> | CompletionObserver<boolean> | unde...' is not assignable to type '{ (observer: Observer<boolean>): Subscription; (onNext: (value: boolean) => void, onError?: ((err...'.
      Types of parameters 'observer' and 'observer' are incompatible.
        Type 'Observer<boolean>' is not assignable to type 'NextObserver<boolean> | ErrorObserver<boolean> | CompletionObserver<boolean> | undefined'.
          Type 'Observer<boolean>' is not assignable to type 'CompletionObserver<boolean>'.
            Types of property 'complete' are incompatible.
              Type '(() => void) | undefined' is not assignable to type '() => void'.
                Type 'undefined' is not assignable to type '() => void'.

我不确定你们的减速机是什么样子,但我假设:

触点特征->减速器 contactsReducer->是contactsFeature中的属性 showListsPanel->是contactsReducer对象中的属性

您可以使用。选择“还原剂”、“阿曲布他”、“子”。。。而不是拔,拔

对于其他问题,您可以使用以下选项强制选择:

this.showLists = this.store.select('contactsFeature', 'contactsReducer', 'showListsPanel') as Observable<boolean>;

我正在使用vscode自动导入模块。i、 e.如果我使用npm模块中的类,vscode会自动将适当的导入语句添加到文件的顶部


显然,我的一个npm模块不是rxjs,它定义了自己的可观察对象,vscode已经自动导入了它,非rxjs可观察对象。这个非rxjs可观测值导致了类型问题。

您能解释一下您可以使用的含义吗。选择“reducer”、“atribute”、“sub”。。。而不是拔。拔。?我目前正在使用.select,但不熟悉.pulk方法。关于你可以使用选择,对不起,我添加了一个PS,但可以更清楚地说:我试图使用一个可观察的,打字脚本不允许我。说商店不支持可观察的界面或类似的东西。基本上与编译错误消息相同。嗯,我创建了一个新的测试项目,我对此没有问题。showLists=this.store。选择“contactsFeature”、“contactsReducer”、“showListsPanel”;。我的应用程序中一定有东西在改变商店…你能告诉我你的减速机的名称,你想选择的减速机中的属性名称吗?谢谢你提供帮助!尽管我看到了我的答案,但我还是解决了这个问题。我不允许在接下来的两个小时内将我自己的答案标记为正确答案:/这正是我的问题!谢谢:
this.showLists = this.store.select('contactsFeature', 'contactsReducer', 'showListsPanel') as Observable<boolean>;