我想加载具有在子路由中具有相同路径值的依赖分解器的不同组件

parent:

 path: 'test',
 loadChildren: () => 
   import('./myRoutingModule').then(
     (m) => m.myDynamicRoutes),

child:

    export const myDynamicRoutes: Routes = buildMyRoutes();

    export function buildRoutes(): Route[] {
    var version =  inject(myService);
    if (version === 1) {
        return [
            {
                path: '',
                component: oneComponent,
                resolve: {
                    initData: oneResolver,
                },
            },
        ];
    } else if (version === 2) {
        return [
            {
                path: '',
                component: twoComponent,
                resolve: {
                    initData: twoResolver,
                },
            },
        ];
}

这里不允许我使用inpin有什么方法可以使用吗?是否有更好的替代方案来动态设置路由.我正在使用有Angular 的17个独立组件

推荐答案

据我所知,路由不是动态的,只运行一次,因此您需要使用CanMatchFn来处理这种情况,以便有条件地允许根据标志访问路由!

export const myDynamicRoutes: Routes  = [
        {
            path: '',
            component: oneComponent,
            canMatch: [CanMatchRoute],
            resolve: {
                initData: oneResolver,
            },
            data: { version: 1 },
        },
        {
            path: '',
            component: twoComponent,
            canMatch: [CanMatchRoute],
            resolve: {
                initData: twoResolver,
            },
            data: { version: 1 },
        },

可以激活可以包含注入并有条件地进行路由!

const canMatch: CanMatchFn = (route: Route, segments: UrlSegment[]) => {
    var service =  inject(myService);
    return route?.data?.version === service?.version;
};

Typescript相关问答推荐

使用类和子类以及迭代类属约束对类属递数据 struct 建模

类型保护,用于验证是否定义了二元组的每个项

使用新控制流的FormArray内部的Angular FormGroup

如何修复正在处理类型但与函数一起使用时不处理的类型脚本类型

为什么从数组中删除一个值会删除打字错误?

如何在TypeScrip中从字符串联合类型中省略%1值

<;T扩展布尔值>;

我可以使用TypeScrip从字符串词典/记录中填充强类型的环境对象吗?

ANGLE独立组件布线错误:没有ActivatedRouting提供程序

为什么&;(交集)运算符会删除不相交的属性?

对于始终仅在不是对象属性时才抛出的函数,返回Never

使用动态输出类型和泛型可重用接口提取对象属性

在React中定义props 的不同方式.FunctionalComponent

S,为什么我的T扩展未定义的条件在属性的上下文中不起作用?

Typescript,如何在通过属性存在过滤后重新分配类型?

窄SomeType与SomeType[]

在Vite中将SVG导入为ReactComponent-不明确的间接导出:ReactComponent

如何填写Partial的一些属性并让类型系统知道它?

通过函数传递确切的类型,但验证额外的字段

Typescript 是否可以区分泛型参数 void?