首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular2路由-用OpaqueToken解决接口使用问题

Angular2路由-用OpaqueToken解决接口使用问题
EN

Stack Overflow用户
提问于 2017-02-25 14:05:42
回答 1查看 83关注 0票数 0

我希望在实例化路由/组件之前获取数据。因此,我想使用来自Angular2-Routing模块的"Resolver"-Interface。

看看我的密码。它使用字符串作为提供程序名称,但如果我为提供程序使用OpaqueToken,则会引发错误。

注意“不起作用”的-Comment。

1我的(儿童)路线(节选)。

代码语言:javascript
复制
export const routes: Routes = [{
path: 'myPath',
component: MyComponent,
children: [
    {
        path: ':id',
        component: MyComponent,
        resolve: {
            itemData: 'MyResolver' // WORKING --- wanted to replace with itemData: MyToken
        }
    }
]
}];

2我的模块代码(节选):

代码语言:javascript
复制
export let MyToken: OpaqueToken = new OpaqueToken('my.resolver');    

@NgModule({
        imports: [
            CommonModule,
            ...
        ],
        declarations: [
            MyComponent,
        ],
        providers: [
            {
                provide: 'MyResolver', // WORKING -- wanted to replace with provide: MyToken
                useFactory: (DataService: any) => {
                    return new MyResolverService(DataService);
                },
                deps: [MyInstanceOfDataService]
            }
        ]
    })
    export class MyModule {
    }

3我的自定义解析器-类(节选):

代码语言:javascript
复制
@Injectable()
export class MyResolverService implements Resolve<any> {

    constructor(protected DataService: any) {
    }

    resolve(ActivatedRoute: ActivatedRouteSnapshot): Promise<any> {
        return this.DataService.getItem(id).toPromise()
                .then((response: any}) => {
                    return response;
                });
    }
}

不可能将字符串("myResolver")替换为创建的OpaqueToken ("MyToken“-当然没有引号)。不知道为什么。我为多个提供程序使用了多个OpaqueToken,但是Resolver无法使用它。

控制台中的错误消息如下所示,没有进一步的信息。

错误:必须定义令牌!

有人知道吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-25 14:10:14

代码语言:javascript
复制
// import MyResolver and MyToken here

export const routes: Routes = [{
path: 'myPath',
component: MyComponent,
children: [
    {
        path: ':id',
        component: MyComponent,
        resolve: {
            itemData: MyResolver
            itemData: MyToken
        }
    }
]
}];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42457051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档