2017-02-16 9 views
3

私は/tipsに住みたいtips.pdfを持っています。アセット2のアバディーンのURLのURL

ユーザーが手動で/tipsを入力すると、/tips.pdfにリダイレクトすることをお勧めします。新しいタブでリダイレクトすることをおすすめします。

ルーティングモジュールを更新したとき、私はError: Cannot match any routes. URL Segment: 'tips'を得ました。

const ROUTES: Routes = [ 
    { 
    path: '', redirectTo: '/home', pathMatch: 'full' 
    }, 
    { 
    path: 'home', component: HomeComponent 
    }, 
    { 
    path: 'fun', component: FunComponent 
    }, 
    { 
    path: 'tips', redirectTo: '../assets/pdfs/tips.pdf', pathMatch: 'full' 
    } 
] 

これはコンポーネントがないためですか?明らかに私はアセットフォルダ内の固定PDFのコンポーネントを作成したくない。

+0

リダイレクトの種類はサーバーで行う必要があります –

+0

私はサーバー上でそれを行う方法を知っていますが、 Angular内でそれを達成する方法 – itsclarke

答えて

0

これは、ルート・マシニング '../assets/pdfs/tips.pdf'がないためです。最初のリダイレクトは、家庭がROUTESの2番目のエントリと一致しているために機能します。

Angularを使用する必要はありません。サーバー構成にリダイレクトを追加する必要があります。

0

私はAngularがそれを行うことができるとは思わない。

あなたが試すことができる1つのことは、window.openを使用してURLを開くダミーコンポーネントを作成することです。

{ 
    path: 'tips', component: FilOpenerComponent 
} 

export class FilOpenerComponent { 
    constructor(private router: Router) { 
     window.open("../assets/pdfs" + this.router.url + ".pdf"); 
    } 
} 

さらに、このコンポーネントをクエリパラメータを使用して一般化すると、ファイルの場所を正確に知ることができます。

-1

現在のパスまたはリダイレクトされたパスのいずれかのコンポーネントの角度が必要です。 答えに挙げたように、ロジックをコンポーネントに追加する必要があります

関連する問題