Я пытаюсь установить или снять флажок на основе возвращаемого значения функции в 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'"/>`
Да @NarenMurali: используя aggrid
предпочитайте хранить переменную isChecked на уровне каждой строки, поскольку флажок — это действие отдельной строки
@NarenMurali: не могли бы вы помочь мне с базой кода?
@ДханьяРадж. Вам не нужно использовать флажок, просто значение ваших данных будет истинным или ложным, а в таблице будет отображаться установленный или нет флажок в зависимости от значения элемента. Помните, что в angular у нас есть переменные в .ts, Angular связывает значения переменных в .html.
Попробуйте использовать следующий код, чтобы установить или снять флажок в зависимости от возвращаемого значения функции. Если вы измените значение на массив «хороший» или «данные», флажок в выводе будет снят.
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, мне нужно установить флажок, когда он вернет истинное значение, напишите сейчас, даже если условие истинно, вернув его как "". Не могли бы вы помочь?
const isChecked = isFunDone(params.value)? 'проверено': ''; //строка. Я пытаюсь получить логическое значение здесь. Например, в isFunDone() - если условие удовлетворяет, я пытаюсь вернуть логическое значение true
не могли бы вы отредактировать вопрос и дать немного больше контекста? Меня немного смущает ваша функция isFunDone
. Принимает ли он входной параметр?
Он не принимает никаких параметров, если условие внутри функции удовлетворяет, то возвращает true, иначе false, а затем, если оно истинно, тогда флажок должен быть отмечен или снят с галочки (соответственно отредактировал вопрос)
не могли бы вы помочь мне с этим, так как я застрял в этом уже 4-5 дней?
data.value
и good.value
не имеют отношения к данным в строке? заголовок вашего сообщения определяется динамически
большое спасибо за старый ответ, это то, что мне нужно.
мне нужна еще одна помощь: в настоящее время я делаю это так: const проверено = params.data.A === params.data.B? 'checked': '', но в этом случае, если два значения A и B также равны нулю, флажок устанавливается, любая помощь, например, если он равен нулю, не должна быть отмечена
Я думаю, вы используете aggrid, не могли бы вы воспроизвести проблему на одном из примеров их веб-сайтов и поделиться кодом в вопросе.