Boe*_*rne 2 this typescript angular2-routing angular
我想在Angular项目的typescript类中引用关键字"this".但它无法使用.我总是得到我想要改变的变量没有定义的错误.这是我的实现:
export class ContactComponent implements OnInit {
contactForm: FormGroup;
errorMsg:string = '';
redirect = "";
loggedIn(): void {
this.redirect = "dashboard";
console.log("success");
Run Code Online (Sandbox Code Playgroud)
在我的HTML中,重定向变量连接到routerLink,如下所示:
<a [routerLink]="redirect"></a>
Run Code Online (Sandbox Code Playgroud)
我已尝试使用其他函数中的其他变量,但始终存在相同的错误.
编辑:
loggedIn函数在另一个函数中作为"success"参数调用,如下所示:
submitForm(): void {
DBEventProxy.instance().dbevent.login(this.contactForm['username'],
this.contactForm['password'], this.loggedIn, this.failed);
}
Run Code Online (Sandbox Code Playgroud)
登录功能需要参数用户名,密码,成功功能,失败功能.
您需要绑定loggedIn到正确的上下文.有几种选择:
1)定义loggedIn为绑定函数:
export class ContactComponent implements OnInit {
loggedIn = () = > {
this.redirect = "dashboard";
console.log("success");`
Run Code Online (Sandbox Code Playgroud)
2)使用 bind
export class ContactComponent implements OnInit {
contactForm: FormGroup;
errorMsg:string = '';
redirect = "";
loggedIn(): void {
this.redirect = "dashboard";
console.log("success");
submitForm(): void {
DBEventProxy.instance().dbevent.login(this.contactForm['username'],
this.contactForm['password'], this.loggedIn.bind(this), this.failed);
^^^^^^^^^^
}
Run Code Online (Sandbox Code Playgroud)
3)包装this.loggedIn成一个保留上下文的箭头函数:
this.contactForm['password'], () => this.loggedIn(), this.failed);
Run Code Online (Sandbox Code Playgroud)
也许你想要做同样的事情this.failed.在这里阅读更多关于bind和箭头功能
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |