2017-01-05 1 views
4

Привет, у меня есть проблема с этим. В моем компоненте я есть inputt сеттер так:Угловой 2 Как сделать сеттер ждать, чтобы установить сеттер для завершения

@Input() set editStatus(status: boolean) { 
    this.savedEditStatus = status; 
    if (this.savedEditStatus === true && this.getTrigg === true) { 

     this.getDataFromFlex("SHOWS_L").then((data: any) => { 
      this.getTrigg = false; 
      this.lengthDataOptions = data; 
     }) 
    } else { 
     this.getTrigg = true; 
     this.lengthDataOptions = undefined; 
    } 

}; 

Моя проблема заключается я получить два режима редактирования со значением истинного, и они в, поступающей почти одновременно. Итак, прямо сейчас для этого компонента в этом случае функция getDataFromFlex будет вызываться два раза. Мне не нужен второй звонок, поэтому я думаю, что getTrigg (boolean) будет решением. И это не работает. Поэтому мне нужно немного помочь вам, ребята. GetTrigg по умолчанию при запуске компонента, установленном для истины

ответ

3

Я рекомендую использовать интерфейс ngOnChanges для осуществления такого взаимодействия с внешними компонентами. Это гарантирует, что у вас есть ожидаемое значение для выполнения необходимых действий после изменения этого значения:

import { Component, OnInit, Input, OnChanges, SimpleChange } from '@angular/core'; 

@Input() savedEditStatus: boolean; // change to field not getter/setter 

ngOnChanges(changes: { [propKey: string]: SimpleChange }) { 
    if (changes['savedEditStatus'] && changes['savedEditStatus'].currentValue === true && 
     this.getTrigg === true) { 
     this.getDataFromFlex("SHOWS_L").then((data: any) => { 
      this.getTrigg = false; 
      this.lengthDataOptions = data; 
     }) 
    } else { 
     this.getTrigg = true; 
     this.lengthDataOptions = undefined; 
    } 
} 
Смежные вопросы