Angular2 +, будет ли обнаружение изменения триггера генератора событий? - PullRequest
0 голосов
/ 12 мая 2018
  • родительский компонент имеет один дочерний компонент (child1)
  • компонент child1 имеет свойство input персонажа и OnPush стратегия changeDetection
  • внутри дочернего компонента, используйте settimeout в ngOnInit для изменяемого лица.

    • обычно dom view не обновляется из-за стратегии onPush
    • однако, если я использую источник событий, чтобы испустить это изменяемое изменение в его родитель, который в свою очередь меняет привязку свойства (изменяемый) получает обновление.

Итак, мой вопрос здесь, будет ли проверка представления триггера источника событий? (Обнаружение изменений). Спасибо!

родительский компонент

@Component({
  selector: 'app-root',
  template: '<app-child1 [person]="person", (changOnPerson)="onPersonChange($event)">',
})
export class AppComponent {
  person: Person = {
    name: 'Alex',
    age: 20
 };
 constructor() {
 }
 onPersonChange($event) {
    this.person = $event.change;
  }
}

child1.compnent

@Component({
  selector: 'app-child1',
  template: '{{person | json}}',
  changeDetection: ChangeDetectionStrategy.OnPush
})

export class Child1Component implements onInit {
  @Input() person: Person;
  @Output() changOnPerson = new EventEmitter();
  constructor() { }

  ngOnInit() {
    setTimeout(() => {
      this.person.name += ' ,abc';

      // core code here !
      this.changOnPerson.emit({ change: this.person });
    }, 2000);
  }
}

1 Ответ

0 голосов
/ 12 мая 2018

Я не думаю, что так будет, так как EventEmitter является Observable, поэтому я не думаю, что он заключен в NgZone.

Хотя не полагайтесь на значения по умолчанию Обнаружения изменений, если это возможно.Просто используйте OnPush.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...