angular - Angular 应用程序在解析器中不显示任何内容
问题描述
我有一个解析器 - 解析我的身份验证状态,但我的 Web 应用程序没有显示任何错误 - 有什么想法吗?如果我通过管道映射我的解析器中可观察到的身份验证状态的值,则会发出一个值。
授权解析器
import { AuthenticationService } from '../services/authentication.service';
import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
@Injectable({ providedIn: 'root' })
export class AuthResolver implements Resolve<Observable<any>> {
constructor(private authservice: AuthenticationService) { }
resolve(): Observable<any> {
return this.authservice.getAuthState();
}
}
认证服务
public getAuthState() {
return this.authenticationState.asObservable();
}
在我的 app-routes.ts
export const ROUTES: Route[] = [
{
path: '', component: BaseComponent,resolve: { authState: AuthResolver}, children: [
{ path: '', component: HomeComponent, pathMatch: 'full' },
{ path: 'account/create', component: RegisterComponent },
{ path: 'account/login', component: LoginComponent },
]
},
{ path: '404', component: PagenotfoundComponent },
{ path: '**', redirectTo: "/404" }
]
解决方案
解析器返回的可观察对象需要完成。只有在那之后,页面才会被加载。实现这一点的一个简单方法是使用take(1)
,如果你想要你的 state observable 的最新值。
resolve(): Observable<any> {
return this.authservice.getAuthState().pipe(
take(1)
);
}
推荐阅读
- c++ - Qt:如何强制 QTabBar 填充整个布局?
- ios - 有没有办法在 SwiftUI 中更改列表的背景颜色?2020 (iOS 14)
- python - 基于前一行的计算(熊猫)
- python - 在 Python 中验证多个正则表达式模式的问题
- angular - 的初始值
- java - 使用 Mockk 模拟 java 静态方法时附件 ByteBuddyAgent 期间出错
- macos - 如何让 Flutter 项目在 MacOS 上运行以成功使用 Firestore?
- node.js - 如何在 Algolia Search 索引中添加数组作为属性值?
- python - 当您将模型应用于真实数据时,如何检查 ML 中的模型是否适合数据集?
- ios - 如果用户选择该选项,有没有办法可以向 UIAlertController 的 NotNow 按钮添加操作并在 24 小时后触发它?