首页 > 解决方案 > Angular中主题订阅的未知类型错误

问题描述

我有一个服务,我声明了一个主题->

isLoading = new Subject();

在组件中,我正在尝试订阅主题。

this.loadSubscription = this.service.isLoading.subscribe(loading=> {
        this.isLoading = loading.status;
    });

我在加载变量上收到打字稿类型错误。它说

类型 'unknown'(loading) 上不存在属性 'status'

我也无法将类型添加为任何类型以加载变量。我该如何解决这个问题?

标签: angulartypescriptrxjs

解决方案


Subject接受泛型变量。因此将其视为 更准确Subject<T>

如果您Subject从正确的路径导入,即rxjs(而不是rxjs/dist/types例如)T将默认为any.

要正确修复您的错误,请重新检查导入路径并注释isLoadingSubject.

所以如果你有type LoadingStatus = { status: string }你可以的类型

  1. isLoading: Subject<LoadingStatus> = new Subject();
  2. isLoading = new Subject<LoadingStatus>();

推荐阅读