Использование вложенных компонентов в Angular 2

#angular #typescript #nested #angular-components

#angular #typescript #вложенный #angular-компоненты

Вопрос:

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

 'test-cell-map' is not a known element:  

 1. If 'test-cell-map' is an Angular component,
    then verify that it is part of this module.
 2. If 'test-cell-map' is a Web Component then add "CUSTOM_ELEMENTS_SCHEMA"
    to the '@NgModule.schema' of this component to suppress this message.
  

Вот модуль компонента

 import { BrowserModule } from '@angular/platform-browser';                                                                                                                                                                                    
import { NgModule } from '@angular/core';                                                                                                                                                                                                     
import { FormsModule } from '@angular/forms';                                                                                                                                                                                                 
import { HttpModule } from '@angular/http';                                                                                                                                                                                                   

import { AppComponent } from './app.component';                                                                                                                                                                                               
import { TestCellMapComponent } from './test-cell-map/test-cell-map.component';                                                                                                                                                               

@NgModule({                                                                                                                                                                                                                                   
    declarations: [                                                                                                                                                                                                                           
        AppComponent,                                                                                                                                                                                                                         
        TestCellMapComponent                                                                                                                                                                                                                  
    ],                                                                                                                                                                                                                                        
    imports: [                                                                                                                                                                                                                                
        BrowserModule,                                                                                                                                                                                                                        
        FormsModule,                                                                                                                                                                                                                          
        HttpModule                                                                                                                                                                                                                            
    ],                                                                                                                                                                                                                                        
    providers: [],                                                                                                                                                                                                                            
    bootstrap: [AppComponent]                                                                                                                                                                                                                 
})                                                                                                                                                                                                                                            
export class AppModule { }
  

Вот как выглядит компонент верхнего уровня

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

@Component({                                                                                                                                                                                                                                  
    selector: 'my-app',                                                                                                                                                                                                                       
    templateUrl: './app.component.html',                                                                                                                                                                                                      
    styleUrls: ['./app.component.css']                                                                                                                                                                                                        

})                                                                                                                                                                                                                                            
export class AppComponent {                                                                                                                                                                                                                   
    title = 'app works!';                                                                                                                                                                                                                       
}
  

и связанный с ним шаблон

 <h1>                                                                                                                                                                                                                                          
   {{title}}                                                                                                                                                                                                                                   
   <test-cell-map></test-cell-map>                                                                                                                                                                                                             
</h1>
  

Комментарии:

1. пожалуйста, также опубликуйте код TestCellMapComponent.

Ответ №1:

У вас проблема с селектором TestCellMapComponent

 <h1>                                                                                                                                                                                                                                          
  {{title}}                                                                                                                                                                                                                                   
  <app-test-cell-map></app-test-cell-map>      //<<<<===== changed                                                                                                                                                                                                                                                   
</h1>
  

Комментарии:

1. Да, это ответ -> Я использовал Angular-CLI, и по какой-то причине он добавляет «app» к имени в селекторе в подкомпоненте

2. Хорошо. Происходит !

3. Причина в том, что это настроено в angular-cli.json в префиксе.