Как динамически устанавливать или снимать флажок на основе возвращаемого логического значения из функции в Angular

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

у меня есть функция

isChecked:boolean=false

isFunDone()
{if data.value == good.value)
return this.isChecked = true;
}
else{
this.isChecked =false;
}

и в Columndef CellRenderer я вызываю это:

cellrenderer: (params: { isChecked: any;}) => {
 
return `<input type  = "checkbox" [checked] = "this.isFunDone.isChecked =='true'"/>`

🤔 А знаете ли вы, что...
Angular использует строгую типизацию TypeScript для обнаружения ошибок на этапе компиляции.


97
2

Ответы:

Попробуйте использовать следующий код, чтобы установить или снять флажок в зависимости от возвращаемого значения функции. Если вы измените значение на массив «хороший» или «данные», флажок в выводе будет снят.

HTML-файл:

<input type = "checkbox" [checked] = "isChecked" class = "restricted-checkbox">

CSS-файл:

.restricted-checkbox {
  pointer-events: none; 
}

Ц файл:

export class MyComponent {

  data = { value: 'goodValue' }; 
  good = { value: 'goodValue' };
  isChecked = false; 

  // Method to check if values match and update isChecked
  isFunDone(): boolean {
    this.isChecked = this.data.value === this.good.value;
    return this.isChecked;
  }

  ngOnInit(): void {
    this.isFunDone(); 
  }
}

Решено

Если ваша функция глобальная, сделайте это.

ngOnInit(): void {
    this.isChecked = this.data.value === this.good.value;
}

// ...

cellrenderer: (params: ICellRendererParams) => {
    if (this.isChecked) {
        return `<input type = "checkbox" checked>`
    } else {
        return `<input type = "checkbox">`
    }
}

Обратите внимание, что [checked] не будет работать внутри cellRenderer, если это не другой компонент.


Старый ответ:

Это способ сделать это с помощью ag-grid

cellrenderer: (params: ICellRendererParams) => {
   const isChecked = isFunDone(params.value) ? ' checked': ''; //string
   return `<input type = "checkbox"${ isChecked }`;
}

// external function accepting any as I dont know your datatype
isFunDone(data: any) {
 return (data === good.value);
}