2017-01-13 7 views
2

У меня есть два Angular2 компоненты, закодированная с TypeScript:Angular2 - проблема компиляции с вложенным компонентом

приложение/app.component.ts

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'my-app', 
    styles : [` 
     .parent { 
      background : #c7c7c7; 
      color : #000; 
      padding: 20px; 
     } 
    `], 
    template: ` 
     <div class="parent"> 
      <h1>{{name}}</h1> 
     </div> 
    `, 
}) 
export class AppComponent { name = 'Angular'; } 

приложением/child.components.ts

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'child-component', 
    styles : [` 
     .child { 
      background : #aaa; 
      padding: 10px; 
     } 
    `], 
    template: ` 
     <div class="child"> 
      <h2>{{name}}</h2> 
     </div> 
    `, 
}) 
export class ChildComponent { 
    name = "Child Component"; 
} 

Если в компоненте app/app.component.ts Я не влагаю компонент: app/child.components.ts все правильно скомпилировано.

Пожалуйста, проверьте здесь:

http://plnkr.co/edit/5PfPmDoUkxYRirCtwSGa?p=preview&open=app%2Fapp.component.ts

Но если I гнездо это, то я думаю, что transpiler неспособна компиляции ...

приложение/app.component.ts (раскрой : приложение/child.components.ts)

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'my-app', 
    styles : [` 
     .parent { 
      background : #c7c7c7; 
      color : #000; 
      padding: 20px; 
     } 
    `], 
    template: ` 
     <div class="parent"> 
      <h1>{{name}}</h1> 
      <child-component></child-component> 
     </div> 
    `, 
    directives: [ChildComponent] 
}) 
export class AppComponent { name = 'Angular'; } 

челобитная е, проверьте здесь:

http://plnkr.co/edit/qpsYQx4Ih4qQ1dyk3tFH?p=preview&open=app%2Fapp.component.ts

Мои вопросы:

1- Что происходит сбой в коде выше?

2- Есть ли способ проверить журнал ошибок транспилятора TypeScript, чтобы узнать, что происходит, когда есть проблемы с транспиляцией, например здесь?

+0

Какая версия Angular2 вы используете? В компоненте нет декларации 'directives', это идет в' NgModule' –

+2

Ну, в вашем проекте нет 'AppModule' и' main.ts' !! –

+0

Я действительно предлагаю вам начать с начала учебника, чтобы познакомиться с основами :) Это действительно действительно хороший учебник на всем пути! https://angular.io/docs/ts/latest/tutorial/ – Alex

ответ

2

Ну, чувство хорошо сегодня;)

У вас не хватает двух больших частей в вашем приложении. BTW, Plunker имеет предустановленные угловые 2 шаблона, из которых вы можете начать играть. Так что вы отсутствовали, это NgModule и main.ts-файл.

Вы можете прочитать больше о NgModule here, но, как отрывок из этой страницы:

угловой модуль класса украшен метаданными @NgModule.

Метаданные:

  • объявить, какие компоненты, директивы и трубы принадлежат к модулю.
  • сделать некоторые из этих классов общедоступными, чтобы другие шаблоны компонентов могли использовать их.
  • импортировать другие модули с компонентами, директивами и трубопроводами, необходимыми для компонентов в этом модуле.
  • предоставляет услуги на уровне приложения, которое может использовать любой компонент приложения.

Поскольку у вас есть ребенок компонент, необходимо также добавить CUSTOM_ELEMENTS_SCHEMA, так как у вас есть <child-component> тег, то есть элемент. Вот бы быть NgModule, что будет работать для вас, так что очень минимален:

@NgModule({ 
    imports: [ 
    BrowserModule, 
    ], 
    declarations: [ 
    AppComponent 
    ChildComponent, 
    ], 
    bootstrap: [ AppComponent ], 
    schemas: [CUSTOM_ELEMENTS_SCHEMA], 
}) 

export class AppModule { } 

Другой отсутствующий файл был main.ts, который запускает приложение.

import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; 
import {AppModule} from './app'; 

platformBrowserDynamic().bootstrapModule(AppModule) 

Ваши компоненты были почти правильными. Но мы больше не используем «директивы», все об этом заботится в NgModule.

Вот Plunker

Как я уже сказал, я действительно предлагаю вам начать с самого начала урока из Angular.io Учебник очень хороший, на мой взгляд!

+0

Вы были правы, я пропустил некоторые файлы (которые я уже имел на своем компьютере). Я изменил свой код: http://plnkr.co/edit/qpsYQx4Ih4qQ1dyk3tFH?p=preview&open=app%2Fapp.component.ts Не могли бы вы сказать мне, какая деталь, которая заставляет мое приложение терпеть неудачу сейчас ?, Мне нужна эта деталь. Может быть, вы можете передать мне разветвленную ссылку. – nightclub

+0

http://plnkr.co/edit/Ah5dq2o947heHj4cn9Mi?p=preview&open=app%2Fapp.component.ts Это ваш плункер с обновленным индексным файлом, добавленный файл конфигурации, удаленные директивы и добавленный импорт дочернего компонента. Имейте в виду, что НЕ копируйте файл конфигурации в локальный проект. Это должно быть только в плункер. И прочитайте учебник !!! – Alex

+0

Спасибо AJT_82! ;) – nightclub