Как динамически устанавливать или снимать флажок на основе возвращаемого логического значения из функции в 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'"/>`

Я думаю, вы используете aggrid, не могли бы вы воспроизвести проблему на одном из примеров их веб-сайтов и поделиться кодом в вопросе.

Naren Murali 26.08.2024 09:03

Да @NarenMurali: используя aggrid

Dhanya Raj 26.08.2024 09:03

предпочитайте хранить переменную isChecked на уровне каждой строки, поскольку флажок — это действие отдельной строки

Naren Murali 26.08.2024 09:05

@NarenMurali: не могли бы вы помочь мне с базой кода?

Dhanya Raj 26.08.2024 10:29

@ДханьяРадж. Вам не нужно использовать флажок, просто значение ваших данных будет истинным или ложным, а в таблице будет отображаться установленный или нет флажок в зависимости от значения элемента. Помните, что в angular у нас есть переменные в .ts, Angular связывает значения переменных в .html.

Eliseo 26.08.2024 11:20
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
5
97
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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);
}

Привет @codeandcloud, мне нужно установить флажок, когда он вернет истинное значение, напишите сейчас, даже если условие истинно, вернув его как "". Не могли бы вы помочь?

Dhanya Raj 27.08.2024 07:50

const isChecked = isFunDone(params.value)? 'проверено': ''; //строка. Я пытаюсь получить логическое значение здесь. Например, в isFunDone() - если условие удовлетворяет, я пытаюсь вернуть логическое значение true

Dhanya Raj 27.08.2024 08:27

не могли бы вы отредактировать вопрос и дать немного больше контекста? Меня немного смущает ваша функция isFunDone. Принимает ли он входной параметр?

codeandcloud 27.08.2024 09:35

Он не принимает никаких параметров, если условие внутри функции удовлетворяет, то возвращает true, иначе false, а затем, если оно истинно, тогда флажок должен быть отмечен или снят с галочки (соответственно отредактировал вопрос)

Dhanya Raj 27.08.2024 09:47

не могли бы вы помочь мне с этим, так как я застрял в этом уже 4-5 дней?

Dhanya Raj 27.08.2024 13:31
data.value и good.value не имеют отношения к данным в строке? заголовок вашего сообщения определяется динамически
codeandcloud 28.08.2024 11:50

большое спасибо за старый ответ, это то, что мне нужно.

Dhanya Raj 30.08.2024 14:57

мне нужна еще одна помощь: в настоящее время я делаю это так: const проверено = params.data.A === params.data.B? 'checked': '', но в этом случае, если два значения A и B также равны нулю, флажок устанавливается, любая помощь, например, если он равен нулю, не должна быть отмечена

Dhanya Raj 30.08.2024 16:31

Другие вопросы по теме