6

Jestem nowy w Angular. Zaczynam od ver. 2.
Potrzebuję link do adresu URL file://.... Próbowałem normalny href:Jak utworzyć link do zewnętrznego adresu URL w Angular 2

Uwaga: app to obiekt modelu, który zajmuje się aplikacjami.

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

To nie działa - link jest tam, z prawidłowym adresem URL, ale wydaje kątowe blokować zdarzenie jakoś. Czemu?

Więc widziałem ng-href, ale to dla Angular 1.x. I z tego, co mogę powiedzieć, there's no *ngHref. Więc to był tylko naiwna próba:

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

Również widziałem coś z trasy, ale to wydaje się być przeznaczony wyłącznie do wewnętrznych połączeń w aplikacji:

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

app.component.ts:

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

W jaki sposób utworzyć link zewnętrzny?

+0

Mają cię sprawdził, jak wygląda URL generowany w DOM? (menu contexte na łączu "Inspect element"). Właściwie "' aplikacja' jest obiektem modelowym sieci, który zajmuje się aplikacjami "nie dostarcza wielu informacji. –

Odpowiedz

9

Zakładam, że app jest przypisany async. Można to obejść stosując Elvis operator:

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

aby nie złamać wiązanie kątowe gdy próbuje rozwiązać go przed app rzeczywiście ma wartość.

Original To działało na przykład:

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

Faktycznie, pierwszym przykładem działa dobrze, jak dobrze

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

Plunker

+0

Wartość adresu URL jest w porządku. Link jest tam, a wartość 'href' też jest w porządku. Wygląda na to, że Angular2 w jakiś sposób odrzuca kliknięcie tego linku. –

+0

Po zmianie 'pliku: //' na 'http: //' link działa poprawnie. Z 'file: //' i komunikat o błędzie jest drukowany na konsoli (niedozwolone ładowanie zasobu lokalnego: file: //www.google.com/index.html). Nie widzę nic złego z linkiem w Angular2. –

+0

Domyślam się, że jest to problem z przeglądarką, a nie Angular. Działa dobrze z adresem 'http: //', który IMHO nie sprawia, że ​​wygląda jak Angular zakłóca takie łącza. –

Powiązane problemy