如果你的Angular resolver中使用了嵌套对象,并且在使用时出现了undefined值的情况,那么你可以尝试使用可选的操作符(Optional Chaining Operator)来解决问题。
示例代码如下:
import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs';
import { UserService } from './user.service';
import { User } from '../models/user';
@Injectable({
providedIn: 'root'
})
export class UserResolver implements Resolve {
constructor(private userService: UserService) {}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | User {
const userId = route.paramMap.get('id');
return this.userService.getUserById(userId).pipe(
map(user => ({
...user,
address: user?.address ?? {} // 使用可选操作符解决undefined值问题
}))
);
}
}
在上述示例代码中,我们使用了可选的操作符“?”来判断user对象的address属性是否存在,如果存在则继续访问,否则返回一个空对象。这样就可以避免出现undefined值的情况了。