纯ngrx商店订阅...效果还是服务?

时间:2018-02-11 20:20:07

标签: angular ngrx ngrx-effects

我有一个使用ngrx的Angular 4应用程序。目前的校长是商店的一部分。每当主体发生变化时(通常是登录或注销,但稍后可能会出现某种类型的切换用户"功能),我想更新应用程序的外观和感觉。我已经有了代码,它将添加全局CSS样式,以及替换徽标。

我不确定的部分:是应该将其作为ngrx效果,服务还是其他方式实现?

store.select( 'principal' ).subscribe(( state ) => {
    this.updateCorporateIdentity( state );
} );

我目前在CorporateIdentityService中有这个,但我不满意我需要在某处注入服务才能创建它。在app.component中注入它会导致lint错误

Property 'corporateIdentityService' is declared but never used.
我相信这是合理的。另一位程序员将偶然发现该未使用的服务并将其删除。 Ngrx效应,afaik,对动作做出反应并产生新动作。我的代码不会产生新的动作。

什么" Angular方式"实现这个?

由于

1 个答案:

答案 0 :(得分:0)

感谢您的评论,我将采用ngrx效果:

export class PrincipalEffects {

    @Effect()
    updateCorporateIdentityOnPrincipalChange$: Observable<Action> = this.actions$
        .ofType( PrincipalActions.SET_PRINCIPAL )
        .flatMap(( action: ActionWithPayload<Principal> ) => {
            return this.corporateIdentityService.updateCorporateIdentity( action.payload );
        } )
        .map(( accountCode: string ) => this.principalActions.corporateIdentityUpdated( accountCode ) );

    constructor(
        private actions$: Actions,
        private corporateIdentityService: CorporateIdentityService,
        private principalActions: PrincipalActions ) { }

}