代码之家  ›  专栏  ›  技术社区  ›  J4N

如何在角度组件中使用NGXS Select()

  •  0
  • J4N  · 技术社区  · 3 年前

    我刚刚安装了一个NGX的角度项目。

    在我的状态下,我有以下几点:

    @Injectable()
    export class AuthState {
      @Selector()
      static isAuthenticated(state: AuthStateModel) {
        return state.currentUser !== null;
      }
      //...
    }
    

    在一个组件中,我将执行以下操作:

    export class HeaderComponent implements OnInit {
      @Select(AuthState.isAuthenticated) isAuthenticated$: Observable<boolean>;
      //...
    }
    

    但它给了我一个编译错误:

    src/app/layout/header/header.component.ts:14:38 - error TS2564: Property 'isAuthenticated$' has no initializer and is not definitely assigned in the constructor.
    
    14   @Select(AuthState.isAuthenticated) isAuthenticated$: Observable<boolean>;
                                            ~~~~~~~~~~~~~~~~
    

    我完全理解为什么angular无法知道它会被正确初始化。

    我搜索了一下,发现了很多指向禁用属性初始化检查的链接

    "strictPropertyInitialization": false
    

    在Tconfig里。

    但问题是我喜欢这个检查,我不想禁用它。必须有一种方法可以不禁用整个应用程序,但仍然使用NGXS Select,对吗?

    0 回复  |  直到 3 年前
        1
  •  1
  •   Henrik Bøgelund Lavstsen    3 年前

    因为你不想改变设置。然后你必须通过构造函数来设置它。

    constructor(store: Store){
        this.isAuthenticated$= store.select(AuthState.isAuthenticated);
    }
    
    推荐文章