小编Chr*_*s T的帖子

我可以定义一个具有索引签名的Typescript类吗?

我有一个接口类型IRawParams,只需指定一个string键和值any.

interface IRawParams {
    [key: string]: any
}
Run Code Online (Sandbox Code Playgroud)

我有一个类,ParamValues它包含键/值之上的一些行为.我想指定ParamValues该类实现IRawParams接口.

class ParamValues implements IRawParams {
    parseFromUrl(urlString: string) {
        Parser.parse(urlString).forEach(item => this[item.key] = item.val);
    }
}

// so I can do something like this
var params = new ParamValues();
params.parseFromUrl(url);
var userId = params.userId;
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,我得到一个编译器错误:

错误TS2420:类'ParamValues'错误地实现了接口'IRawParams'."ParamValues"类型中缺少索引签名.

我可以让我的类实现IRawParams接口,或者获取Typescript以允许我的类的实例与索引类型兼容{[key: string]: any}吗?

typescript typescript1.5

23
推荐指数
1
解决办法
9550
查看次数

以角度4加载路由器出口外的页面

我正在开发一个有角度的4应用程序,我想在router-outlet外加载login.page.ts

这是我的home.component.html文件

<div class="container">
   <top-nav-bar></top-nav-bar>
   <lett-nav-bar></lett-nav-bar>
   <router-outlet></router-outlet>
</div>
Run Code Online (Sandbox Code Playgroud)

路线配置

const MAINMENU_ROUTES: Routes = [
    { path: 'login', component: LoginComponent },
    { path: '', redirectTo: 'home', pathMatch: 'full'},
    { path: 'home', component: HomeComponent, canActivate: [AuthGuard]}
];
Run Code Online (Sandbox Code Playgroud)

有了这个,我可以在路由器内加载登录页面,但我想在进入路由器插座之前全屏加载登录页面.

javascript typescript angular

13
推荐指数
1
解决办法
3860
查看次数

Angular 4如何在注销后重定向页面?

我知道这已经得到了回答,但我对给出的答案并不满意.

我的问题很简单,用户想要注销.

如果它位于需要登录的页面上(使用auth.service.ts在auth.guard.ts中设置)并且用户注销我希望将其重定向到主页.

但是,如果他在一个安全的页面上,我不想重定向他.

我可以使用AuthGuard,但我不想重新加载页面,所以没有:

location.reload()
Run Code Online (Sandbox Code Playgroud)

我的选择是什么?

angular

7
推荐指数
1
解决办法
2万
查看次数

角度6儿童路线组件是不是加载?

我有一点问题.

我有app和Ido这个角6,我正在使用儿童路线

像这样

{
        path:'pages', component:DatePagesComponent,
        children : [
            {path:'404', component:Error404Component},
            {path:'500', component:Error500Component}
        ]
}
Run Code Online (Sandbox Code Playgroud)

我的HTML看起来像

<li [routerLinkActive]="['active']"><a [routerLink]="['/pages/404']">404</a></li>
<li [routerLinkActive]="['active']"><a [routerLink]="['/pages/500']">500</a></li>
Run Code Online (Sandbox Code Playgroud)

并且它使用url精确加载路由但总是加载到此 component:DatePagesComponent

如果我点击404比页面网址更改但不更改组件路由器

而我正在写作

<router-outlet></router-outlet>
Run Code Online (Sandbox Code Playgroud)

进入我的app.components.html档案

你能告诉我这是什么问题以及如何解决它.

typescript angular angular6

1
推荐指数
1
解决办法
5037
查看次数