我在项目中使用angular 7.0.4。在我的组件中,我在declare var FB: any;
之前声明了这样的变量@Component({...})
。
declare var FB: any;
@Component({
selector: 'app-login-modal',
templateUrl: './login-modal.component.html',
styleUrls: ['./login-modal.component.css']
})
export class LoginModalComponent implements OnInit {
private fbAuth;
constructor() { }
ngOnInit(): void {
if (FB) {
FB.getLoginStatus((r) => {
if (r.authResponse) {
this.fbAuth = r.authResponse;
console.log('Loggedin with facebook');
}
});
}
}
问题:有时可以工作,但有时会出现错误ERROR ReferenceError: FB is not defined
。我认为这是因为fb-sdk不在加载中,或者是在一段时间后加载的。
我的问题:有没有办法检查打字稿中是否定义了变量?
预先感谢
答案 0 :(得分:1)
首先,您可能应该弄清楚为什么未定义FB
。 ;)
您声明的方式假定它是在全局范围内声明的,但是如果不是,则JS will raise an error in strict mode。您可以改为将其声明为Window
对象的成员,这将使您检查是否已定义,而JS没有引发错误:
// in a `global.d.ts` file:
interface Window {
FB?: any;
}
ngOnInit() {
if (window.FB) {
// ...
}
}