2016-03-17 17 views
7

नहीं बनाता है मेरे पास तीन बहुत ही बुनियादी घटक हैं: AppComponent,और LoginComponentAppComponent और LoginComponent दोनों AdminComponent पर एक लिंक दिखाएं। AppComponent में router-outlet और सभी रूटिंग कॉन्फ़िगरेशन शामिल हैं।कोणीय 2: रूटलिंक href विशेषता

अब किसी कारण से कोणीय <a [routerLink]="['Admin']">Admin</a> से <a href="/admin">Admin</a>AppComponent में अपेक्षित रूप से प्रस्तुत करता है। हालांकि, LoginComponent में सटीक वही लिंक <a>Admin</a> पर प्रस्तुत किया गया है। मैं क्या गलत कर रहा हूं?

कोणीय संस्करणों ने कोशिश की: 2.0.0-beta.8 और 2.0.0-beta.9।

app.component.ts

import {Component} from 'angular2/core'; 
import {RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router'; 

import {AdminComponent} from './admin.component'; 
import {LoginComponent} from './login.component'; 

@Component({ 
    selector: 'ww-app', 
    template: ` 
    <a [routerLink]="['Admin']">Admin</a>    // This link works as expected 

    <router-outlet></router-outlet> 
    `, 
    directives: [ROUTER_DIRECTIVES] 
}) 
@RouteConfig([ 
    { path: '/login', component: LoginComponent, name: 'Login', useAsDefault: true }, 
    { path: '/admin', component: AdminComponent, name: 'Admin' } 
]) 
export class AppComponent { 
} 

login.component.ts

import {Component} from 'angular2/core'; 
import {RouterLink} from 'angular2/router'; 

@Component({ 
    selector: 'ww-login', 
    directives: [RouterLink], 
    template: ` 
    <div> 
     <a [routerLink]="['Admin']">Admin</a>  // Renders <a>Admin</a> 
     <div>login box </div> 
    </div> 
    ` 
}) 
export class LoginComponent { 
} 

गाया HTML आउटपुट

<ww-app> 
    <a href="/admin">Admin</a>   <!-- link as expected (AppComponent)--> 
    <router-outlet></router-outlet> 
    <ww-login _ngcontent-nky-2=""> 
    <div> 
     <a>Admin</a>     <!-- href is missing here (LoginComponent)--> 
     <div>login box </div> 
    </div> 
    </ww-login> 
</ww-app> 

अद्यतन

ठीक है, मैं सिर्फ इतना Issue with routerLink directive पर एक समान प्रश्न पर stumpled। ऐसा लगता है कि angular2-polyfill.js खराब लड़का है। Thierry's modified plunkr देखें जहां मैंने index.html से पॉलीफ़िल हटा दिया।

अनुवर्ती प्रश्न:

angular2-polyfill

Angular2 polyfill रूप में खुद को वाणी Angular1

यह पूछने के लिए बेवकूफ हो सकता है के लिए है, लेकिन मैं वास्तव में यह क्या ज़रूरत है? जाहिर है, यह मेरे लिए एक समस्या तय करता है, लेकिन यह मुझे एक बुरी भावना देता है क्योंकि यह कोणीय नहीं है 1. अतिरिक्त बहिष्करण चेतावनियां या तो मदद नहीं करती हैं ...

+0

Angular2 का कौन सा संस्करण का उपयोग करते हैं में कोड पर एक नज़र डालें? –

+2

इस मुद्दे के समान लगता है https://github.com/angular/angular/issues/6358, लेकिन मैं 100% निश्चित नहीं हूं। –

+0

@ थिएरी टेम्पलेटर: मैं वर्तमान में 2.0.0-बीटा 9 का उपयोग कर रहा हूं। बीटा 8 में भी हुआ। – Roman

उत्तर

2

मुझे लगता है कि आपकी समस्या यह है कि आप अपना सेट कर रहे हैं [ROUTER_DIRECTIVES] के बजाय [RouterLink] के रूप में निर्देश।

यदि आप कोड देखते हैं, तो राउटरलिंक निर्देश <a> से अलग अन्य टैग के लिए है। राउटर लिंक निर्देश जो <a> टैग के साथ काम करता है वह राउटरलिंक विथहेफ है।

https://github.com/angular/angular/blob/master/modules/%40angular/router/src/directives/router_link.ts

@Directive({selector: ':not(a)[routerLink]'}) 
export class RouterLink { ... } 

@Directive({selector: 'a[routerLink]'}) 
export class RouterLinkWithHref implements OnChanges, OnDestroy { ... } 
संबंधित मुद्दे