我使用NgRx-store
管理我的应用状态。我正在检查的商店数据的切片可以是字符串或字符串数组。我想使用*ngIf
检查该字符串或数组是否具有某个值?
我现在正在做的是,我正在订阅商店值的切片并将布尔常量返回到*ngIf
。
在我的组件中,
isRegistry: boolean;
isEmbryology: boolean;
authStoreData: Subscription;
ngOnInit() {
this.authStoreData = this.store.select(c => c.auth).subscribe(
(data: fromAuth.State) => {
const userDatabases = data.entities[fromAuth.authId].userData.userDatabases;
let userDatabaseCollection: Array<string> = [];
isArray(userDatabases) ? userDatabaseCollection = userDatabases :
userDatabaseCollection.push(userDatabases);
for (const databaseKey in userDatabaseCollection) {
if (userDatabaseCollection[databaseKey]) {
if (userDatabaseCollection[databaseKey] === 'Clinic Database') { this.isRegistry = true; };
if (userDatabaseCollection[databaseKey] === 'Embryology Database') { this.isEmbryology = true; };
}
};
}
);
}
ngOnDestroy() {
this.authStoreData.unsubscribe();
};
在我的模板中,我会检查isRegistry
,isEmbryology
等等。
我现在的方法是使用async pipe
选择商店的切片来获取数据,但如果我在这里处理数组,我不知道如何查找值。像这样的东西
authData: Observable<any>;
this.authData = this.store.select(c => c.auth.entities[fromAuth.authId]);
并在我的模板中
<li *ngIf="(authData | async ).userData.userDatabases == 'Clinic Database'">
答案 0 :(得分:0)
答案就在我面前,.includes()
<li *ngIf="(authData | async).userData.userDatabases.includes('Clinic Database')" >