2015-03-18 26 views
23

Angular.io üzerindeki açısal 2 demo ile oynadım. Şimdi yeni bir bileşen oluşturmak ve onu uygulamamın içinde kullanmak istiyorum.Angular 2, ana bileşenin içindeki bileşen

Benim şu anki uygulaması:

import {Component, Template, bootstrap} from 'angular2/angular2'; 
import {UsersComponent} from './components/users/component.js'; 

// Annotation section 
@Component({ 
    selector: 'my-app' 
}) 
@Template({ 
    url:"app.html" 
}) 
// Component controller 
class MyAppComponent { 
    newName:string; 
    names:Array<string>; 
    constructor() { 
    this.name = 'Florian'; 
    } 

    showAlert(){ 
    alert("It works"); 
    } 

    addName(){ 
    names.push(newName); 
    newName = ""; 
    } 
} 

bootstrap(MyAppComponent); 

Benim bileşen: my kullanıcı bileşeninin sözdizimi hiç doğru olup olmadığını

import {Component, Template, bootstrap} from 'angular2/angular2'; 
// Annotation section 
@Component({ 
    selector: 'users' 
}) 
@Template({ 
    url:"./template.html" 
}) 
// Component controller 
class UsersComponent { 
    newName:string; 
    names:Array<string>; 
    constructor() { 

    } 

    addName(){ 
    names.push(newName); 
    newName = ""; 
    } 
} 

emin değilim.

Uygulamam şablonu:
<h1>Hello {{ name }}</h1> 
<h2>{{2+2}}</h2> 
<hr /> 
<button (click)="showAlert()">Click to alert</button> 
<users></users> 

Peki nasıl Kullanıcı bileşenini kadar Tel mı?

ben konsolda olsun hatası:

"Error loading "components/users/component.js" at <unknown>↵Error loading "components/users/component.js" from "app" at http://localhost:8080/app.es6↵Cannot read property 'replace' of undefined" 

cevap

22

Eğik takvim demo iç içe geçmiş iki bileşeni vardır (takvim ve ajanda hücreli) https://github.com/djsmith42/angular2_calendar.git. Orada gördüğüm kadarıyla senin MyAppComponent böyle, Şablon'un direktifleri listesinden @ yanından kullanıcılar bileşeni başvuruda bulunmalıdır Gönderen: Gördüğünüz

@Template({ 
    url: System.baseURL+'app/components/calendar/calendar.html', 
    directives: [ 
    Foreach, 
    If, 
    CalendarCell 
    ] 
}) 
+0

Haklısınız, örnek için teşekkürler. Uygulamamda gerçekten direktif dizisi yoktu. Kullanıcılarım bileşenimin şablon URL'm yanlıştı (mutlak bir yol olmalı). Ve bileşen klasörümü html dosyasındaki System.paths öğesine eklemedim. – user1613512

+0

Minör nit: Direktifler listesinden önce bir 'const' dosyasına ihtiyacınız olduğunu düşünüyorum. İşte bir modifiye quickstart öğretici ile bir mikro yazma: http://bq9.blogspot.ch/2015/03/angular2-dart-nested-components.html – buraq

+0

(Bu dart için değil) Bu kişi js kullanıyor. –

10

Angular2 web https://angular.io/docs/ts/latest/tutorial/toh-pt3.html# bu linkte o örneğin @Componentsdirectives: [...] ekleyerek:

@Component({ 
    selector: 'my-app', 
    directives: [UsersComponent] 
}) 

, ancak aksam, bu bileşenin içindeki bağlantı şablonunu kullanır, bu bileşen, @Template({ url:"app.html"}) dış bileşenini kullanırsanız, bunun çalışıp çalışmadığını bilmez.

Daha fazla ayrıntı için app.appcomponet.ts dosya adını izleyebilirsiniz, umarım yardımcı olur.

+3

artık bu mümkün değil. – rbtLong