Angular 5 - 回调范围是否有限?

时间:2018-01-12 08:37:15

标签: javascript angular firebase callback promise

我们假设您定义了一个类似下面的变量(snackbar)。它可以通过this的Angular类的其余部分访问,但不能在promises的回调中访问。我使用的是AngularFire 5.

export class SomeComponent implements OnInit {
    constructor(private snackbar: MatSnackBar, private afs: AngularFirestore) {}    

    //Promise function
    this.afs.doc(path).set({
        ...some code
    }).then(function(docRef){
        this.snackbar.open('Snackbar message', 'OK');  //Sanckbar unreachable
    });

    //Regular function
    this.snackbar.open('Snackbar message', 'OK');  //Sanckbar works fine
}

有人会如何从then内部获取这些变量?或者这是不可能的?

1 个答案:

答案 0 :(得分:2)

这是一个JavaScript"功能"

使用

 }).then((docRef) =>{

而不是

 }).then(function(docRef){

另见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions