Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
Angular ngModel为条件时读取值时出错_Angular - Fatal编程技术网

Angular ngModel为条件时读取值时出错

Angular ngModel为条件时读取值时出错,angular,Angular,我正在使用ngModel进行双向绑定(在输入框中显示值,如果用户更改,则更新模型的值),并且工作正常 <input id="myInput" name="myInput" type="text" [(ngModel)]="myModel && myModel.myProperty" /> 现在,如果DB和绑定到控件后的结果为空,并且用户在输入框中设置了一些值,那么我试图从模型中

我正在使用ngModel进行双向绑定(在输入框中显示值,如果用户更改,则更新模型的值),并且工作正常

<input
 id="myInput"
 name="myInput"
 type="text"
 [(ngModel)]="myModel && myModel.myProperty"
 />

现在,如果DB和绑定到控件后的结果为空,并且用户在输入框中设置了一些值,那么我试图从模型中读取值,模型显示为未定义。

您到底想实现什么?在第二种情况下,更改输入值或模型值时,
myModel.myProperty
仍应更新

请参见此处的快速演示:


ngModel的三元组是

  • #myInput被设置为ngModel。(Angular自己的控件名称语法)
  • ngModel双向绑定语法:[(ngModel)]
  • (ngModelChange)它指向一个事件处理程序
请注意,myBindable属性是此组件的Typescript文件中的一个属性

ngModelChange始终首先触发并发送myInput参数,即ngModel。以下是ngModel包含的内容

有两个感兴趣的字段:模型(最后一个已知值)和视图模型(当前更改)。如果onPropertyChange事件处理程序始终返回viewmodel,则可以使用true双向绑定

它有点傻,但每次都能工作,而且它还使您能够在发生更改时启动异步工作


如果使用管道,它们总是最后一次启动,并且不会影响另一个更改周期。这里有一篇关于这个问题的文章

谢谢你的回答,我现在更新这个问题。这是因为“myModel”对象没有初始化。当我在constrator中初始化一个空对象时,它工作了。谢谢大家的回复。
this.getresponse$ = this.myService.serviceMethodName.subscribe(
        (result: ModelType) => { => {
            this.myModel= result;
        },
        error => {
            console.log(
                'Error while no tring to fetch settings not exists in database.',
            );
        },
    );
<input 
 type="text"
 #myInput = "ngModel"
 [(ngModel)]="myBindableProperty"
 (ngModelChange)="myBindableProperty = onPropertyChange(myInput)"
 />