1

我正在检查用户是否已登录, orderscomponent.ts 如下jwt token所示

let userkey = this.storage.get("token");
if (!userkey) {
    this.router.navigate(['signup']);
} 

并导航到signup基于if-condition. 重定向sign up页面后,我正在填写表格。点击sign up 按钮代码如下signupcomponent.ts

<button type="submit" (click)="onSignUp()" class="btn btn-info btn-lg btn-block btn-rounded text-uppercase waves-effect waves-light"></button>

componet.ts我有如下代码

onSignUp(){
    this.router.navigate([`orderpage`])
}

登录用户后,它会重定向到相同的页面,orderpage直到这里它工作正常。

现在我的问题是我signupcomponent.ts 在主页中使用相同的。当我点击注册时,它会将我带到注册页面,当我点击注册按钮时,它应该重定向到相同的主页或个人资料页面。这里我的意思是我想改变this.router.navigate([]) params once already definedurl to another newurl`

4

2 回答 2

1

正如@James Glasgow 提到的,您可以使用服务来实现您的目标。

它看起来像以下示例:

Service

@Injectable()
export class RouterHelper {
    redirectUrl: string = 'orderpage'; // Defined orderpage as default
}

orderscomponent.ts

this.router.navigate(['signup']).then((successful: boolean) => {
    // Only set the redirectUrl, if the routing is successful
    if (successful) {
        this.routerHelper.redirectUrl = 'orderspage';
    }
});

homepage.component.ts

this.router.navigate(['signup']).then((successful: boolean) => {
    // Only set the redirectUrl, if the routing is successful
    if (successful) { 
        this.routerHelper.redirectUrl = 'homepage'; 
    }
});

另一种方法可能是使用 urls 参数:

为此,您将参数添加到两个组件中的导航功能,如下所示:

this.router.navigate(['signup', { parentUrl: 'orderpage'}]);

在你的signupcomponent.ts

onSignUp() {
    const parentUrl = this.route.snapshot.paramMap.get('parentUrl');
    this.router.navigate([parentUrl]);
}

如果您要重用您的signupcomponent.ts,您应该使用对路由器参数的订阅(请参阅此处)。

于 2018-09-08T08:07:07.287 回答
0

您可以使用两种主要方式

一个是将返回 url 传递给服务并由

this.router.navigate([[this.urlService.redirectUrl]]);

你只需将 url 存储在服务中

另一种使用方式

this.location.back();

弹出堆栈并返回上一页Location Docs

于 2018-09-07T21:30:03.100 回答