#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. очистите «личное» и повторите попытку . также тип этой функции является пустым и измените его на логический