代码之家  ›  专栏  ›  技术社区  ›  user2024080

如何在没有html编译的情况下重定向“刷新”页面?

  •  0
  • user2024080  · 技术社区  · 8 年前

    我正在使用 dynamic 内容所有我的html页面。当用户刷新页面时,我需要重定向到主页。但是错误抛出了我的html页面,该页面根本没有重定向。

    我的html:

    <div class="btn-sec">
          <button type="submit" (click)="goToArtcilePage()" [disabled]="productedSelected" class="btn">{{appProps['book.label.buttons.next']}}</button>
        </div>
    

    像ts中的重定向:

     constructor(private store: StorageService, 
          private sharedData: SharedDatasService, 
          private location:Location,
          private router:Router) {
    
          if ((!this.appData || !this.appProps ) && Object.keys(this.sharedData.validationDatas).length === 0) {
            this.router.navigate(['/']);
            return;
          }
    
        }
    

    但仍会出现以下错误:

    ERROR TypeError: Cannot read property 'book.label.buttons.next' of undefined 而且页面根本没有重定向。

    有没有解决此问题的建议?

    3 回复  |  直到 8 年前
        1
  •  0
  •   Sachila Ranawaka    8 年前

    使用“获取属性”从HTML访问数据

    get getAppProps(): string {
      return this.appProps['book.label.buttons.next']
    }
    
    <button type="submit" (click)="goToArtcilePage()" [disabled]="productedSelected" class="btn">{{getAppProps}}</button>
    
        2
  •  0
  •   Pradeep Lakku    8 年前

    您可以使用

     this.router.navigateByUrl('url', {skipLocationChange: true});
    

    这个 {skipLocationChange: true}) 属性将更改路由,但不会更改url。因此,url始终显示主url,但在内部状态发生更改。

    另一种解决方案是使用角度 RouteGuards . 角度有 canActivate 和 canDeactivate 路线守卫。你可以利用他们的优势来处理你的案子。

        3
  •  0
  •   Sourangshu Sengupta    8 年前

    我认为问题在于 {{appProps['book.label.buttons.next']}} . 这个 TypeError 发生为 appProps 直到数据到达才定义。

    可能使用安全导航操作员 ? 像这样: {{appProps?.book.label.buttons.next'}} .