在 RC.1 中使用新路由器时如何扩展 RouterOutlet
How do I extend RouterOutlet when using the new router in RC.1
在 RC.1 中使用新路由器时,我似乎无法扩展 RouterOutlet
示例:
import { Directive } from '@angular/core';
import { Router, ROUTER_DIRECTIVES, RouterOutlet } from '@angular/router';
@Directive({
selector: 'router-outlet'
})
export class RouterOutletDirective extends RouterOutlet {
}
错误:
@angular/router/index"' has no exported member 'RouterOutlet'.
我是做错了什么还是 RC.1 中的新路由器出了问题?
已更新:
import { Directive, Attribute, ViewContainerRef, DynamicComponentLoader } from '@angular/core';
import { Router, Routes, RouterOutletMap } from '@angular/router';
import { RouterOutlet } from '@angular/router/src/directives/router_outlet';
@Directive({
selector: 'router-outlet'
})
export class RouterOutletDirective extends RouterOutlet {
constructor(parentOutletMap: RouterOutletMap, _location: ViewContainerRef, name: string) {
super(parentOutletMap, _location, name);
console.log( parentOutletMap );
}
activate() {
console.log('Activate');
}
}
所以现在是 运行 但 RouterOutlet 带有红色下划线,类型 "any" 不是构造函数类型,而且激活部分不起作用。我错过了什么吗?
RouterOutlet
和 RouterLink
未从 @angular/router
导出。这个问题最近已经修复了,我希望这个修复会包含在 RC.2 中。
作为解决方法,您可以从私有路径 (src/...
) 导入它们,直到新版本发布。
提示
也就是说,又有新的路由器在进行中。如果您目前正在从 beta 路由器或 @angular/router-derprecated
迁移到 @angular/router
,最好推迟到新的新路由器推出。
这是 RC 1 版本的工作代码
import { Directive, Attribute, ViewContainerRef, DynamicComponentLoader } from '@angular/core';
import { Router, Routes, RouterOutletMap } from '@angular/router';
import { RouterOutlet } from '@angular/router/src/directives/router_outlet';
@Directive({
selector: 'router-outlet'
})
export class LoggedInRouterOutlet extends RouterOutlet {
constructor(parentOutletMap: RouterOutletMap, _location: ViewContainerRef, name: string){
super(parentOutletMap, _location, name);
}
//activate() {} //EXPIRED
unload(): void { }
loadedComponent: Object
isLoaded: boolean
load(factory, providers, outletMap: RouterOutletMap): any {
super.load(factory, providers, outletMap);
//DO YOUR CHECK HERE
return this.loadedComponent;
}
}
在 RC.1 中使用新路由器时,我似乎无法扩展 RouterOutlet
示例:
import { Directive } from '@angular/core';
import { Router, ROUTER_DIRECTIVES, RouterOutlet } from '@angular/router';
@Directive({
selector: 'router-outlet'
})
export class RouterOutletDirective extends RouterOutlet {
}
错误:
@angular/router/index"' has no exported member 'RouterOutlet'.
我是做错了什么还是 RC.1 中的新路由器出了问题?
已更新:
import { Directive, Attribute, ViewContainerRef, DynamicComponentLoader } from '@angular/core';
import { Router, Routes, RouterOutletMap } from '@angular/router';
import { RouterOutlet } from '@angular/router/src/directives/router_outlet';
@Directive({
selector: 'router-outlet'
})
export class RouterOutletDirective extends RouterOutlet {
constructor(parentOutletMap: RouterOutletMap, _location: ViewContainerRef, name: string) {
super(parentOutletMap, _location, name);
console.log( parentOutletMap );
}
activate() {
console.log('Activate');
}
}
所以现在是 运行 但 RouterOutlet 带有红色下划线,类型 "any" 不是构造函数类型,而且激活部分不起作用。我错过了什么吗?
RouterOutlet
和 RouterLink
未从 @angular/router
导出。这个问题最近已经修复了,我希望这个修复会包含在 RC.2 中。
作为解决方法,您可以从私有路径 (src/...
) 导入它们,直到新版本发布。
提示
也就是说,又有新的路由器在进行中。如果您目前正在从 beta 路由器或 @angular/router-derprecated
迁移到 @angular/router
,最好推迟到新的新路由器推出。
这是 RC 1 版本的工作代码
import { Directive, Attribute, ViewContainerRef, DynamicComponentLoader } from '@angular/core';
import { Router, Routes, RouterOutletMap } from '@angular/router';
import { RouterOutlet } from '@angular/router/src/directives/router_outlet';
@Directive({
selector: 'router-outlet'
})
export class LoggedInRouterOutlet extends RouterOutlet {
constructor(parentOutletMap: RouterOutletMap, _location: ViewContainerRef, name: string){
super(parentOutletMap, _location, name);
}
//activate() {} //EXPIRED
unload(): void { }
loadedComponent: Object
isLoaded: boolean
load(factory, providers, outletMap: RouterOutletMap): any {
super.load(factory, providers, outletMap);
//DO YOUR CHECK HERE
return this.loadedComponent;
}
}