我试图根据Angular 8中的值禁用和启用复选框

发布于 2025-01-31 18:40:34 字数 1243 浏览 3 评论 0原文

这是我的代码

列表数组,例如:这是GetCall。 ktsessions = [{“主持人”:“ bharath”,“ topic”:“ angular”,“状态”:“计划”,“ emailId”:“ [email  email  protected] :“ “,”主题“:“ aps”,“状态”:“计划”,“ emailId”:“ [email  prected] ”}];

<tr *ngFor = "let ktsession of ktsessions >

  <td ><input type="checkbox" [disabled]='disabled'></td>
</tr>

TS代码:

getktsession(){   
    this.service.getKtsession().subscribe(data =>{
      console.log('get', data);
      this.ktsessions = data;
      this.ktsessions.find(user => {
     
       if(user.presenter ==="Kanchan"){
       this.disabled = true
} else {
this.disabled = false;
}
        
      });
    });
  }

Here is my code

I am having List Array like: this is getCall.
ktsessions =
[ {"presenter":"Bharath","topic":"Angular","status":"scheduled","emailId":"[email protected]"}, {"presenter":"Sayyad","topic":"Angular","status":"organized","emailId":"[email protected]"},{"presenter":"Kanchan","topic":"APS","status":"scheduled","emailId":"[email protected]"} ];

<tr *ngFor = "let ktsession of ktsessions >

  <td ><input type="checkbox" [disabled]='disabled'></td>
</tr>

TS code:

getktsession(){   
    this.service.getKtsession().subscribe(data =>{
      console.log('get', data);
      this.ktsessions = data;
      this.ktsessions.find(user => {
     
       if(user.presenter ==="Kanchan"){
       this.disabled = true
} else {
this.disabled = false;
}
        
      });
    });
  }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

-黛色若梦 2025-02-07 18:40:34

这里有几个问题。

  1. &lt; tr *ngfor =“让ktsessions&gt;的ktsession-在ktsessions
  2. &lt; td;禁用] ='disabled'&gt;&lt;/td&gt; - [disabled] ='disabled'应该是 [disabled] =“ ktsession.disabled” 每个复选框实例都需要其自己的禁用>禁用 component类实例的属性而不是复选框实例
  3. 。 /en-us/doc/web/javaScript/referent/global_objects/array/gind“ rel =“ nofollow noreferrer”> array#find 也不是在这里使用的合适方法,即使它恰好起作用,因为您曾经有工作'不从回调函数返回任何内容,因此会迭代整个数组。元素,这就是您在这里所做的。
  4. this.disabled = truethis.disabled = false - 它们在组件类实例上设置disabled属性(这是<代码> this 是指),但是您需要做的是在每个禁用属性上设置属性> user 实例:user.disabled = true 或user.disabled = false

因此,您的模板应该看起来像这样:

<tr *ngFor="let ktsession of ktsessions">
  <td>
    <input type="checkbox" [disabled]="ktsession.disabled" /> <!-- reference "ktsession.disabled" instead of "disabled" -->
    {{ ktsession.presenter }}
  </td>
</tr>

并且您的subscribe应该看起来像这样:

this.getKtsession().subscribe((data) => {
  this.ktsessions = data;
  this.ktsessions.forEach((user) => { // <-- use forEach, not find
    if (user.presenter === 'Kanchan') {
      user.disabled = true; // <------------ set user.disabled, not this.disabled
    } else {
      user.disabled = false; // <----------- set user.disabled, not this.disabled
    }
  });
});

这是一个stackblitz 显示它可以与这些更改一起使用。

There are several issues here.

  1. <tr *ngFor = "let ktsession of ktsessions > - Missing closing quote after ktsessions
  2. <td ><input type="checkbox" [disabled]='disabled'></td> - [disabled]='disabled' should be [disabled]="ktsession.disabled". Each checkbox instance needs to have its own disabled property. [disabled]='disabled' sets each checkbox's disabled property to the disabled property of the component class instance rather than the checkbox instance.
  3. this.ktsessions.find(user => { - Array#find is not an appropriate method to use here, even though it happens to work since you're not returning anything from the callback function and it will therefore iterate the entire array. Array#find is for searching an array for an element that matches the specified criteria and returning that element, not for iterating over an array and setting properties on each element, which is what you're doing here. Array#forEach is the appropriate method for that.
  4. this.disabled = true and this.disabled = false - these are setting the disabled property on the component class instance (which is what this refers to), but what you need to do is set the disabled property on each user instance: user.disabled = true or user.disabled = false.

So your template should look something like this:

<tr *ngFor="let ktsession of ktsessions">
  <td>
    <input type="checkbox" [disabled]="ktsession.disabled" /> <!-- reference "ktsession.disabled" instead of "disabled" -->
    {{ ktsession.presenter }}
  </td>
</tr>

And your subscribe should look something like this:

this.getKtsession().subscribe((data) => {
  this.ktsessions = data;
  this.ktsessions.forEach((user) => { // <-- use forEach, not find
    if (user.presenter === 'Kanchan') {
      user.disabled = true; // <------------ set user.disabled, not this.disabled
    } else {
      user.disabled = false; // <----------- set user.disabled, not this.disabled
    }
  });
});

Here's a StackBlitz showing it working with those changes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文