我很长时间使用react / redux,现在我正在尝试学习angular / ngrx。
我有疑问
怎么写在商店?在redux商店我只是连接使用过的功能 连接,并在角度我连接像这样
@Component({ selector: 'home',
templateUrl: './home.html' }) export class HomeComponent implements OnInit {
console = console;
todos$: Observable<any>;
todo: string;
todoDate: string;
indexToEdit: number | null;
constructor(private store: Store<any>) {}
ngOnInit() {
this.todos$ = this.store.select('todoReducer');
}
接下来我在模板中使用todos$
进行循环,但是如果我console.log(todos$)
它只是商店的对象,我无法找到我的商店状态,我怎样才能从商店中读取状态?
答案 0 :(得分:1)
您可以使用rxjs operator do来显示副作用,不要忘记导入它。
this.todos$ = this.store.select('todoReducer').do(res => console.log(res))
另一种方式是订阅,但这将破坏ngrx的目的。并且您不会在模板中使用异步管道,也需要取消订阅。
storeSub: Subscription;
this.storeSub = this.store.select('todoReducer').subscribe((data) => {
console.log(data);
this.todos = data;
})
答案 1 :(得分:1)
todo $是您所在州的观察对象。
您可以在控制器中使用它,如下所示:
this.todo$.subscribe(state => console.log(state));
或者在你的模板中这样:
{{ todo$ | async }}
<input type="text" name="myfield" (change)="modifyField($event.target.value)" [value]="(todo$ | async)?.myfield"></input>