6

Ich bin neu in Angular. Ich beginne mit ver. 2.
Ich muss auf eine file://... URL verlinken. Ich habe versucht, normalen href:So erstellen Sie einen Link zu externen URL in Angular 2

Hinweis: app ist ein Modellobjekt der Bahn, die mit Anwendungen befasst.

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

das nicht funktioniert - die Verbindung ist, mit der richtigen URL, aber Angular scheint irgendwie um das Ereignis zu blockieren. Warum?

So habe ich ng-href gesehen, aber das ist für Angular 1.x. Und there's no *ngHref von dem, was ich sagen kann. So war dies nur ein naiver Versuch:

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

Auch habe ich gesehen, etwas mit Routing, aber das scheint nur innerhalb der Anwendung für interne Links bestimmt werden:

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

app.component.ts:

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

Wie kann man eine externe Verbindung erstellen?

+0

Sie haben überprüft, wie die URL aussieht, die im DOM erzeugt wird? (contexte Menü auf dem Link "Element prüfen"). Eigentlich ist "App" ein Modellobjekt des Internets, das sich mit Anwendungen beschäftigt, bietet nicht viele Informationen. –

Antwort

9

Ich nehme an, app ist async zugewiesen. Sie können mit der Elvis operator dieses Problem umgehen:

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

nicht die Bindung zu brechen, wenn Angular versucht es zu lösen, bevor app tatsächlich einen Wert hat.

Original- Dieses zum Beispiel arbeitete:

@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'; 
    } 
} 

Eigentlich Ihr erstes Beispiel funktioniert auch

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

Plunker

+0

Der URL-Wert ist in Ordnung. Der Link ist da und der 'href'-Wert ist auch in Ordnung. Es scheint, dass Angular2 den Klick auf diesen Link irgendwie verwirft. –

+0

Wenn Sie 'file: //' in 'http: //' ändern, funktioniert der Link einwandfrei. Mit 'file: //' wird eine Fehlermeldung an die Konsole ausgegeben (lokale Ressource darf nicht geladen werden: file: //www.google.com/index.html). Ich sehe nichts falsches mit dem Link in Angular2. –

+0

Ich denke, das ist ein Browser-Problem, kein Angular-Problem. Es funktioniert gut mit einer "http: //" URL, die IMHO nicht so aussieht, als ob Angular mit solchen Links interferiert. –