Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度:在NGF内部绑定NGF_Javascript_Html_Angular_Data Binding_Javascript Databinding - Fatal编程技术网

Javascript 角度:在NGF内部绑定NGF

Javascript 角度:在NGF内部绑定NGF,javascript,html,angular,data-binding,javascript-databinding,Javascript,Html,Angular,Data Binding,Javascript Databinding,我试图在每个列表项上填充一个带有条件的列表,其中条件可以通过用户输入进行更改 例如: app.component.ts private check = true; private some = [ {name: 'ABC', condition: true}, {name: 'def', condition: this.check}, {name: 'GHI', condition: true} ]; app.component.html <div *ngFor=

我试图在每个列表项上填充一个带有条件的列表,其中条件可以通过用户输入进行更改
例如:
app.component.ts

private check = true;
private some = [
    {name: 'ABC', condition: true},
    {name: 'def', condition: this.check},
    {name: 'GHI', condition: true}
];
app.component.html

<div *ngFor="let item of some">
  <div *ngIf="item.condition">
  {{item.name}}
  </div>
</div>

<select [(ngModel)]="check">
  <option [value]="true">true</option>
  <option [value]="false">false</option>
</select>

{{item.name}
真的
假的
在这里,我有一个列表,
['ABC','def','GHI']
,其中一些元素我希望总是显示
(条件:true)
,其余的,我将条件放在变量
(检查)

列表加载正确,但通过下拉菜单更改条件变量
(选中)
,不会反映更改(列表不会更新)
任何帮助都将不胜感激

  • 您应该对模板中解析的字段使用公共访问权限
  • 此。检查
    作为值传递,而不是对组件字段的引用-这就是为什么它在下拉选择中没有更改
  • 因此,为了解决这个问题,您必须以某种方式通过引用传递“check”标志。您可以将检查从布尔更改为某个对象,例如:
    check={value:boolean=true}或考虑更通用的方法:)

    您必须使用对象使“checked”属性链接到数组。
    此外,如果条件为false,则应使用
    ,以免生成任何HTML

    <!-- HTML -->
    <ng-container *ngFor="let item of some">
      <div *ngIf="item.condition">
        {{item.name}}
      </div>
    </ng-container>
    
    <select [(ngModel)]="myFakeForm.check">
      <option [value]="true">true</option>
      <option [value]="false">false</option>
    </select>
    
    // TS
    public myFakeForm = { check: true }
    public some = [
        {name: 'ABC', condition: true},
        {name: 'def', condition: this.myFakeForm.check},
        {name: 'GHI', condition: true}
    ];
    
    
    {{item.name}
    真的
    假的
    //TS
    public myFakeForm={check:true}
    公共部分=[
    {name:'ABC',条件:true},
    {name:'def',条件:this.myFakeForm.check},
    {name:'GHI',条件:true}
    ];
    
    感谢您的回复!但是上面的代码片段不起作用。列表仍然根据条件的初始值。你能再检查一下吗?那样的话,你可能得改变一下操作方法。
    some
    是静态数组吗?我的意思是它不依赖于任何东西,你总是用3个元素在构造器中构建它,只有第二个元素依赖于复选框?我试着像上面提到的那样做,但它是一样的。列表未得到更新