gpt4 book ai didi

angular - TS2345 : Argument of type 'string | null' is not assignable to parameter of type 'string | UrlTree'

转载 作者:行者123 更新时间:2023-12-04 16:24:43 26 4
gpt4 key购买 nike

这个问题的标题是 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”,如果我把光标放在上面,它会说:

"Argument of type 'string | null' is not assignable to parameter of type 'string | UrlTree'.Type 'null' is not assignable to type 'string | UrlTree'."


我有一个与 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
});
}
}

有没有人知道这里编译器的问题是什么?我还附上了控制台消息。
Console message

最佳答案

该错误为您提供了所需的所有信息。localStorage.getItem返回一个字符串或 null , 和 router.navigateByUrl期望参数为 stringUrlTree .在调用 router.navigateByUrl 之前,您必须检查 localStorage.getItem 的返回值以确保它不为空。因为你不能用 null 调用它.

let returnUrl = localStorage.getItem('returnUrl');
if (returnUrl) { // i.e, not null and not empty string
// now returnUrl cannot be null, so it must be a string, which is valid to use in this call
router.navigateByUrl(returnUrl);
}

关于angular - TS2345 : Argument of type 'string | null' is not assignable to parameter of type 'string | UrlTree' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67406954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com