onPu sh стратегия обнаружения изменений не обновляет значения в Angular - PullRequest
0 голосов
/ 23 февраля 2020

Я учусь использовать стратегию обнаружения onPu sh. Мое представление обновляется нормально, но переменные в моих значениях child.component.ts - нет, но они имеют значение для child.component. html

РЕБЕНОК КОМПОНЕНТ

@Component({
  ....
  changeDetection: ChangeDetectionStrategy.OnPush
})

export class BdayFormComponent implements OnInit {

  @Input() question: Question;
  @Output() nextQuestion = new EventEmitter<Question>();


  nextQuestions(): void {
    ...
    this.nextQuestion.emit(......)
    console.log(this.question);
  }
}

Как видите, nextQuestion, говорит родительскому компоненту отправлять действие для получения нового вопроса. Я вижу следующий вопрос на моем HTML (скажем, вопрос № 2), но когда я делаю console.log(this.questions);, он печатает вопрос № 1.

РОДИТЕЛЬСКИЙ КОМПОНЕНТ

export class BdayShellComponent implements OnInit {
  question$: Observable<Question>;

  constructor(private store: Store<fromProduct.State>) { }

  ngOnInit(): void {
    this.question$ = this.store.pipe(select(fromProduct.getCurrentQuestion));
  }

  setCurrentQuestion(question: Question): void {
    this.store.dispatch(new bdayActions.SetCurrentQuestion(question));
  }
}

РОДИТЕЛЬСКИЙ КОМПОНЕНТ HTML

<app-bday-form [question]="question$ | async"
        (nextQuestion)="setCurrentQuestion($event)"></app-bday-form>

1 Ответ

1 голос
/ 23 февраля 2020

В то время, когда вы помещаете инструкцию log, компонент не получил новый ввод.

Попробуйте выполнить следующее, и вы увидите записываемое значение

  ngOnChanges(changes: SimpleChanges) {
    console.log(changes.question)
  }
...