- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用来自自定义 <base href="/long/required/path/index.html">
的哈希路由的 Angular 4 应用程序.这样做是因为要求声明此 url 必须是项目的根目录。我正在尝试使用哈希路由来解决这个问题。
我看到的问题涉及解析给定路线的数据。给定一个 url localhost:8000/long/require/path/index.html#/project/1/document/55
和 app.routes.ts
export const ROUTES: Routes = [
{
path: 'project/:projectId/document/:documentId',
component: DocumentViewerComponent,
resolve: { document: DataResolver}
},
{ path: '**', component: NoContentComponent }
];
此处的解析器按预期运行并检索数据。
@Injectable()
export class DataResolver implements Resolve<Document> {
constructor(
private docService: DocumentService,
) { }
public resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Document> {
this.docService.getDocument(route.params.workspaceId,route.params.documentId)
.subscribe(d => {
console.log('Document received, waiting for components to load?', d);
this.docService.documentRecieved(d);
}
);
return this.docService.recievedDocument$;
}
}
文档服务
@Injectable()
export class DocumentService {
private recievedDocumentSource = new Subject<Document>();
recievedDocument$ = this.recievedDocumentSource.asObservable();
documentRecieved(document: Document) {
this.recievedDocumentSource.next(document);
}
}
这里的目的是其他组件可以订阅 recievedDocument$
并获取新的文档信息。这目前有效,其他组件通过订阅此 Observable
来获取文档.然而,<router-outlet>
从不渲染我的主要组件,并在检查了一些 ActivatedRoute
之后快照,路由器进入ResolveStart
路由器事件,但从未到达 ResolveEnd
事件。
1) 方法合理吗?这有意义吗?
2) 知道为什么我会卡在这个 ResolveStart 状态吗?
免责声明:代码已被简化,所以我寻找的是概念上的缺陷而不是语法上的缺陷
最佳答案
ResolveEnd 没有被触发,因为 Observable 没有完成。因此,尝试在下一次调用后立即完成 Observable。应该发出丢失的事件。
在内部,Angular 使用 concatMap 运算符,它在通知观察者之前等待完成。
关于Angular4 路由 : ResolveStart event never ends,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46673202/
我有一个使用来自自定义 的哈希路由的 Angular 4 应用程序.这样做是因为要求声明此 url 必须是项目的根目录。我正在尝试使用哈希路由来解决这个问题。 我看到的问题涉及解析给定路线的数据。给
我是一名优秀的程序员,十分优秀!