Когда мой шаблон отображает функцию внутри ngOnChanges, срабатывает один раз, а затем только при изменении @input. Является ли это ожидаемым поведением и как я могу его предотвратить?Angular 2: ngOnChanges срабатывает, когда шаблон визуализирует
Ребенок:
export class MobileMenuComponent implements OnInit, OnChanges {
@Input('test') dezeTest: string;
//declare menu
menu;
constructor() {
//define menu
this.menu = {state: 'inactive'};
}
togglemenu() {
var that = this;
if (that.menu.state === 'inactive'){
that.menu.state = 'active';
}
else {
that.menu.state = 'inactive';
}
}
ngOnChanges(changes: SimpleChanges) {
this.togglemenu();
}
}
Спасибо, вторая вещь, которую я искал. История этого вопроса заключается в том, что пользователь должен нажать кнопку в одном компоненте, и что-то должно произойти в дочернем компоненте. Есть ли лучший способ сделать это без ngOnChanges? – Dirk
@Dirk Вы также можете использовать реактивные расширения для этого. Вы можете создать объект где-нибудь, в котором содержится состояние меню (объект логического, истинного/ложного). Когда кнопка нажата на компоненте - измените состояние объекта. Это создаст событие, которое может наблюдать абонент.(У ваших детей вы можете наблюдать это событие и соответствующим образом обрабатывать изменение) –
Хорошо. Так любопытно, как HTTP-запрос с наблюдаемым. У вас есть что-то, что я могу посмотреть или прочитать, чтобы узнать больше об этом? Потому что это похоже на то, что наблюдаемые являются более чистым решением. – Dirk