Как мне инициализировать шаблон с помощью свойства @Input, используя ngrx / store? Когда я тестировал функцию addCategory
, она работает как положено, но я хочу отобразить начальное состояние, которое я объявил в редукторе в классе инициализации.
reducer.ts:
export interface AppState {
categoryState: AdminCategory[]
}
export class AdminCategory {
id: number;
name: string;
parentId: number;
constructor(id: number, name: string, parentId: number) {
this.id = id;
this.name = name;
this.parentId = parentId;
}
}
export const ADD_CATEGORY = 'ADD_CATEGORY';
export const REMOVE_CATEGORY = 'ADD_CATEGORY';
export class AddCategory implements Action {
readonly type = ADD_CATEGORY;
constructor(public payload: AdminCategory) { }
}
export class RemoveCategory implements Action {
readonly type = REMOVE_CATEGORY;
constructor(public payload: AdminCategory) { }
}
export type CategoryActions = AddCategory | RemoveCategory
export function categoryReducer(state: AdminCategory[] = [new AdminCategory(1, "asd", 0)], action: CategoryActions) {
switch (action.type) {
case ADD_CATEGORY:
return [...state, action.payload];
default: state;
}
}
дерево-view.ts:
@Component({
selector: 'categories',
template: `
<div *ngFor="let cat of categories | async">
<ul>
<li>
<span (click)="addCategory(cat)">{{cat.name}}</span>
</li>
</ul>
</div>
`
})
export class TreeView implements OnInit {
@Input() categories: Observable<AdminCategory[]>
constructor(private store: Store<AppState>, private dialog: MatDialog) {}
ngOnInit() {
this.categories = this.store.select('categoryState');
}
addCategory(category: AdminCategory) {
this.store.dispatch(new AddCategory(category));
}
}
Я не выдает никаких ошибок, просто ничего не происходит.