这个问题的标题是 Angular CLI 编译器抛出的消息。
我的 app.component.ts 中有这个构造函数:
export class AppComponent {
constructor(private userService: UserService, private auth: AuthService, router: Router) {
auth.user$.subscribe(user => {
if (user) {
userService.save(user);
let returnUrl = localStorage.getItem('returnUrl');
router.navigateByUrl(returnUrl);
}
});
}
}
在上面附加的代码部分中,我在“returnURL”处加了下划线,如果我将光标移到上面,它会显示:
“‘string | null’类型的参数不可分配给‘string | UrlTree’类型的参数。
类型“null”不可分配给类型“string |”网址树'。”
我有一个与 Firebase 相关的 user.service.ts:
import { Injectable } from '@angular/core';
import { AngularFireDatabase } from 'angularfire2/database';
import * as firebase from 'firebase';
@Injectable()
export class UserService {
constructor(private db: AngularFireDatabase) { }
save(user: firebase.User) {
this.db.object('/users/' + user.uid).update({
name: user.displayName,
email: user.email
});
}
}
有谁知道编译器的问题是什么?我还附上了控制台消息。
你有这条线
let returnUrl = localStorage.getItem('returnUrl');
The getItem()
函数返回一个null | string
。如果该项目不在存储中,则该函数返回 null。
router.navigateByUrl(returnUrl);
期望returnUrl
属于类型string | UrlTree
but returnUrl
被推断为null | string
从它的初始化因此错误
有多种方法可以解决这个问题,一种简单的方法是将返回的值类型转换为字符串
let returnUrl = localStorage.getItem('returnUrl') as string;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)