6

私はAngularを初めて使用しています。私はverで始まっています。 2.
file://...のURLにリンクする必要があります。 私は正常に試しましたhref外部URLへのリンクを角2で作成するには

注:appは、アプリケーションを扱うWebのモデルオブジェクトです。リンクは正しいURLで、そこにあるが、角度は何とかイベントをブロックしているようだ - 動作しません

<a target="_blank" href="file://{{app.outputPath}}/index.html">no link here</a>. 

。どうして?

だから私はng-hrefを見ましたが、それは角度1.xです。そしてthere's no *ngHref私が言うことができますから。だから、これは単なる素朴な試みだった:ルーティングと

<a target="_blank" *ngHref="file://{{app.outputPath}}/index.html">over a directive</a>. 

また、私が見てきた何かが、それは唯一のアプリケーション内の内部リンクのために意図されるように表示されます。

<a [router-link]="['/staticReport', {path: app.outputPath}]">see the report</a>. 

app.component.ts:

@RouteConfig([ 
    ... 
    {path:"/staticReport/:path", redirectTo: 'file:// ???? ' } 
]) 

どうすれば外部リンクを作成できますか?

+0

はあなたを持って正常に動作しますDOMで生成されたURLの内容を確認しますか? (「要素の検査」リンクのcontexteメニュー)。実際には、「アプリケーションはウェブのモデルオブジェクトであり、アプリケーションを扱う」ということはあまり情報を提供しません。 –

答えて

9

私はappが非同期に割り当てられていると仮定します。あなたはElvis operatorを使用してこの問題を回避することができます

<a target="_blank" href="file://{{app?.outputPath}}/index.html">no link here</a>. 

角度がappが実際の値を持つ前に、それを解決しようとすると結合を壊さないために。

オリジナル これは、例えば働い:

@Component({ 
    selector: 'my-app', 
    template: ` 
    <h2>Hello {{name}}</h2> 
    <a target="_blank" [href]="'file://' + outputPath + '/index.html'">no link here</a> 
` 
}) 
export class App { 
    outputPath:string = 'www.google.com'; 

    constructor() { 
    this.name = 'Angular2'; 
    } 
} 

実際には、あなたの最初の例は、同様に

<a target="_blank" href="file://{{outputPath}}/index.html">no link here</a> 

Plunker

+0

URLの値はokです。リンクがあり、 'href'の値もOKです。 Angular2がそのリンクのクリックを何とか捨ててしまうことが起こりそうです。 –

+0

'file://'を 'http://'に変更すると、リンクは正常に動作します。 'file://'でエラーメッセージがコンソールに出力されます(ローカルリソースをロードすることはできません:file://www.google.com/index.html)。私はAngular2のリンクに間違ったものは見当たりません。 –

+0

これはブラウザの問題だと思いますが、Angularの問題ではありません。これはIMHOがAngularのように見せない 'http://' URLでうまく動作し、そのようなリンクと干渉します。 –

関連する問題