Я экспериментирую с компонентом nb-stepper
и хочу установить selectedIndex
в моем компоненте angular. При указании двусторонней привязки для [(selectedIndex)]
после обновления моих действий nb-step не обновляется для отображения выбранного шага.
В моем компоненте я добавил Input () для selectedActivityIndex, который обновляет nb-stepper
, если я установил это значение в ngOnInit()
. Но позже, получив новый список действий, я, кажется, не могу сообщить степперу о новом selectedIndex
.
activity.html
<nb-stepper orientation="vertical" disableStepNavigation="true" [(selectedIndex)]="selectedActivityIndex">
<nb-step *ngFor="let activity of activities"
[label]="activity.name"
[completed]="activity.completed"
></nb-step>
</nb-stepper>
activity.component.ts
export class ActivitiesComponent {
private _selectedActivityIndex: number;
@Output() onSelectedActivityIndexChange = new EventEmitter();
@Input()
get selectedActivityIndex() {
return this._selectedActivityIndex;
}
set selectedActivityIndex(val) {
this._selectedActivityIndex = val;
this.onSelectedActivityIndexChange.emit(this.selectedActivityIndex);
}
constructor(private activitiesService: ActivitiesService) {
this.activities = []
}
ngOnInit() {
this.selectedActivityIndex = 0
this.activitiesService.getActivities()
.subscribe(data => {
if(data['statusCode'] == 200) {
this.activities = data['activities'];
this.selectedActivityIndex = this.activities.map(m => { return m.selected; }).indexOf(true, 0)
}
else
console.log('Failure to get activities: ' + data['statusCode'])
});
}
Я ожидаю, что selectedIndex
будет обновлен до значения, указанного в ответе JSON, возвращаемом службой, на самом деле даже установка this.selectedActivityIndex = 1
в подписке не работает.