【问题标题】:NativeScript & Angular - How to clear the router history?NativeScript & Angular - 如何清除路由器历史记录?
【发布时间】:2020-01-15 15:40:16
【问题描述】:

我正在使用 Angular 8 开发 NativeScript 6 项目。

我想在用户登录后清除路由器历史记录。

这是我尝试过的:

公共登录() {

this.registerUserCredentialsService
    .registerUserCredentials(this.username, this.password)
    .then(() => {
        this.router.navigate(['home-page'], { clearHistory: true });
    });

}

我不断收到此错误:

ERROR in src/app/register-user-credentials.component.ts(33,55): error TS2345: Argument of type '{ clearHistory: boolean; }' is not assignable to parameter of type 'NavigationExtras'.
  Object literal may only specify known properties, and 'clearHistory' does not exist in type 'NavigationExtras'.
How can I clear the router history?

【问题讨论】:

    标签: angular nativescript router


    【解决方案1】:

    NativeScript

    尝试使用RouterExtensions 而不是Router

    import { RouterExtensions } from "nativescript-angular/router";
    
    ...
    constructor(
      private routerExtensions: RouterExtensions
    ) {}
    ...
    this.routerExtensions.navigate(['home-page'], { clearHistory: true });
    

    NativeScript > 7.0

    RouterExtensions 在最近的 NativeScript 版本中有不同的导入路径(用法还是一样)

    import { RouterExtensions } from "@nativescript/angular";
    
    ...
    constructor(
      private routerExtensions: RouterExtensions
    ) {}
    ...
    this.routerExtensions.navigate(['home-page'], { clearHistory: true });
    

    【讨论】:

    • 类型参数 '{ clearHistory: boolean; }' 不可分配给“NavigationExtras”类型的参数。对象字面量只能指定已知属性,而“navigationExtras”类型中不存在“clearHistory”
    • clearHistoryExtendedNavigationExtras 的一部分。它在NavigationExtras@Satrughna 中不存在
    【解决方案2】:

    您也可以使用路由器选项Angular NavigationExtras 文档中提到的 queryParams。你可以像这样设置。

    this.router.navigate(['home-page'], {queryParams: {clearHistory: true }});
    

    【讨论】:

      猜你喜欢
      • 2020-09-10
      • 2022-07-25
      • 2014-02-05
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      相关资源
      最近更新 更多