您好我知道如何在嵌套函数中使用组件的变量。
以下是一个例子:
export class AppComponent implements OnInit {
name = ['Angular 6','Angular5','Angular4','Angular2'];
isexist: string[]=[];
ifExist(text){
var that= this;
console.log("first ",this);
var test="test";
let exist= this.name.map(function (elm){
if(elm==text) {
console.log(this);
this.isexist.push(elm); // works with that.isexist.push(elm);
}
})
}
ngOnInit() {
this.ifExist('Angular 6');
}
这是我在浏览器开发工具中获得的内容
first AppComponent {name: Array(4), namev: "helo", isexist: Array(1)};
second undefined
我有一些问题
如何在不使用箭头功能的情况下访问isexist
?
为什么第二个this
不包含test
元素?
答案 0 :(得分:1)
在这里尝试lambda:
ifExist(text){
var that= this;
console.log("first ",this);
var test="test";
let exist= this.name.map((elm)=>{
if(elm==text) {
console.log(this);
this.isexist.push(elm); // works with that.isexist.push(elm);
}
})
}
答案 1 :(得分:1)
在不使用箭头函数的情况下无法访问ifExists
的原因是箭头函数中的this
与箭头函数创建的上下文具有相同的值
this
具有正常函数从调用的上下文的值(在您的情况下,正常函数的上下文和范围仅是ifExists
方法的内部。