Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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 角度组件@Input在设置时始终为空_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 角度组件@Input在设置时始终为空

Javascript 角度组件@Input在设置时始终为空,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个组件,它有两个输入,一个是集合,一个是正则属性 @Input() public set value(val: string) { this._selectedOption = this._options.find(o => o[this.selectedProperty || 'someDefault'] === val); } @Input() public selectedProperty: string; 在上面的代码中,sel

我有一个组件,它有两个输入,一个是集合,一个是正则属性

@Input() public set value(val: string) {
        this._selectedOption =
           this._options.find(o => o[this.selectedProperty || 'someDefault'] === val);
    }
@Input() public selectedProperty: string;
在上面的代码中,selectedProperty在第一次有设置值时始终为空

这是html:

 <my-component [value]="someValue"
                           selectedProperty="value"
                </my-component>

一个有趣的答案。@Inputs中集合的顺序是它们在类中声明的顺序

因此,要首先设置selectedProperty,它应该是:

@Input() public selectedProperty: string;
@Input() public set value(val: string) {
        this._selectedOption =
           this._options.find(o => o[this.selectedProperty || 'someDefault'] === val);
    }

这通常与JavaScript的工作方式有关,通常这是angular在类中查找输入的顺序。

或者不要期望在属性设置器上设置它。将代码移动到一个方法,并在init上调用它,以及在init之后设置时调用它。必须将代码移动到ngmodel类型,而不是nginit,因为每次值更改时都需要执行。对于我来说,它没有意义,可以工作,请参阅。您确定“somevalue”是父变量吗?请记住,如果您写入[value]=“expresion”,则expresion是一个变量或常量类型
“value”
我无法运行stackblitz,但“someValue”是一个在父级中保存字符串的属性(变量)。我建议编辑stackblitz,以控制台将selectedProperty记录在值集中,查看其是否未定义,是否应该。对不起,@misha,这是真的,请忘记我的评论,唯一的解决方案是更改声明的顺序