Кнопка отключить и включить кнопку в зависимости от условий

#angular #ngrx #ngrx-store #ngrx-effects #ngrx-data

Вопрос:

Я пытаюсь включить кнопку, когда значение возвращает значение true. Даже моя функция возвращает правильное значение, но не работает в соответствии с моими ожиданиями.

Это моя функция:

   buttondisable() {​​​​​ 

    this.store.select(transcriptionSelector).pipe( 

      takeUntil(this.transcriptSubject) 

    ).subscribe(data => {​​​​​ 

      if (data.uiState === 'LOADED' || data.uiState === 'SAVED') {​​​​​ 

        if (data.text[0].status === 'Y') {​​​​​ 

           this.submitted = true; 

        }​​​​​ else {​​​​​ 

          this.submitted = false; 

        }​​​​​ 

      }​​​​​ 

      return this.submitted; 

    }​​​​​); 

  }​​​​​ 


 

HTML:

 <button mat-raised-button color="accent" [disabled]="submitted? true: null" 
>{​​​​​{​​​​​transcriptButtonText}​​​​​}​​​​​</button> 
 

Комментарии:

1. можете ли вы проверить, меняется ли статус отключен в chrome средств разработки

2. каковы начальные значения представленных данных?

3. Вы действительно где-то вызываете функцию buttondisable ()?

4. Вы просите html-экран или файл ts

5. В файле TS?

Ответ №1:

Это не сработает, потому что вы присваиваете Y отправленному var.

Попробуй:

 if (data.text[0].status === 'Y') {​​​​​ 
  // this.submitted = data.text[0].status === 'Y'; 
  console.log( this.submitted); 
  this.submitted = true; 
}​​​​​ else {​​​​​ 
  console.log(this.submitted); 
  this.submitted = false; 
}​​​​​ 
 

Комментарии:

1. Тогда как можно проверить статус и присвоить значение

2. Вы уже проверяете статус в условии if.

Ответ №2:

попробуйте это :

 private buttondisable() {​​​​​
this.store.select(transcriptionSelector).pipe(
  takeUntil(this.transcriptSubject)
).subscribe(data => {​​​​​
      let flag = false;
      console.log(data);
      if (data.uiState === 'LOADED' || data.uiState === 'SAVED') {​​​​​
        if (data.text[0].status === 'Y') {​​​​​
          this.submitted = true;
          flag = true;
        }​​​​​ 
      }​​​​​
      return flag;
    }​​​​​);
 

Комментарии:

1. Флаг также имеет логическое значение справа

2. очистите «личное» и повторите попытку . также тип этой функции является пустым и измените его на логический