我有一個簡單的 Angular 應用程式,它使用來自路由器的查詢引數,如下所示:
const routes: Routes = [{
path: '',
component: DefaultComponent
},
{
path: ':uname',
component: ProductDisplayComponent
}];
這很好用,我可以按如下方式訪問“產品”“uname”:
let prodId = params.get('uname')
問題是一些“uname”值是數字,一些是帶括號的數字,例如“567(B)”
如果“uname”只是一個數字,則一切正常,但是一旦括號在 uname 中,應用程式就會重定向到“/”。
當“unmae”有括號時,有沒有辦法獲得價值?
謝謝,
uj5u.com熱心網友回復:
因為括號有特殊的含義,我做了一些額外的處理,但我會給你一個小例子,希望有道理
{
path: 'd', component: DComponent,
children:[
{path: 'c', component: CComponent},
{path: 'a', component: AComponent,outlet:'right'},
]
},
this.router.navigateByUrl('/home/d/(c//right:a)')
主要用作二級路由出口
uj5u.com熱心網友回復:
基于以下報告:github.com/angular/angular/issues/10280,這就是我解決最初發布的問題的方式。
創建一個新類,如下所示:
import { UrlSerializer, UrlTree, UrlSegment, DefaultUrlSerializer } from '@angular/router'; export class CustomUrlSerializer implements UrlSerializer { private dus = new DefaultUrlSerializer(); parse(url: any): UrlTree { url = url.replace(/\(/g, '(').replace(/\)/g, ')'); return this.dus.parse(url) } serialize(tree: UrlTree): any { return this.dus.serialize(tree).replace(/(/g, '(').replace(/)/g, ')'); } }在“app.modules.ts”(或任何模塊檔案)中,將以下內容添加到提供程式中:
providers: [MyOtherServices, { provide: UrlSerializer, useClass: CustomUrlSerializer }],更多的...
祝你好運
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/329016.html
