2017-02-19 14 views
6

Я только что установил приложение ng2 для медвежьей кошки, используя ng2 cli. В моем AppModule я добавил schema: [ CUSTOM_ELEMENTS_SCHEMA ], а в моем AppComponent шаблоне у меня есть <row></row>. Но я getting-Angular2 CUSTOM_ELEMENTS_SCHEMA не работает

Unhandled Promise отказ: ошибки шаблона синтаксического анализа: «строка» не является известным элементом: 1. Если «строка» является Угловая компонент, то убедитесь, что он является частью этого модуль. 2. Если «строка» является веб-компонентом, добавьте «CUSTOM_ELEMENTS_SCHEMA» в «@ NgModule.schemas» этого компонента, чтобы подавить это сообщение. ("[ERROR ->]

AppModule-

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

import { AppComponent } from './app.component'; 


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

AppComponent-

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

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent {} 

AppComponentTemplate-

<row></row> 

Это действительно так просто, что щеколда происходит. на?

Edit:

Все ответы на приведенные ниже являются удовлетворительными и дать представление о проблеме. @yurzui Мне особенно нравится ваш ответ за предоставление источника. Хотел бы я дать вам весь принятый ответ! Но я выберу @camaron за то, что я первый и даю прямое решение моей проблемы. Если вы найдете этот вопрос через google, дайте @yurzui, @camaron и @Aravind +1 для помощи в этой проблеме!

ответ

9

Вы должны добавить RowComponent быть импортированы вашим AppModule

imports: [RowComponent]

Edit:

Использование NO_ERRORS_SCHEMA, это происходит потому, что угловой пытается найти компонент, который не существует.

CUSTOM_ELEMENTS_SCHEMA для компонентов с - в названии селектора.

+0

У меня нет «RowComponent», это проблема. Он не предназначен для компонента, это просто случайное имя элемента. –

+0

попробуйте с NO_ERRORS_SCHEMA в качестве последнего ресурса –

+0

Да, это работает. Хотел бы я знать, почему CUSTOM_ELEMENTS_SCHEMA не работает. Если никто не сможет ответить на этот вопрос, я выберу это как ответ –

5

Если вы посмотрите на список изменений https://github.com/angular/angular/blob/master/CHANGELOG.md#200-rc5-2016-08-09

По умолчанию Угловой ошибки будет во время синтаксического анализа на неизвестных свойствах, даже , если они находятся на элементах с - в их имени(так называемый пользовательский элементы). Если вы используете пользовательские элементы, заполните новый параметр @ NgModule.schemas значением [CUSTOM_ELEMENTS_SCHEMA].

, то вы можете понять, что вам нужно иметь бирку с - разделителем

if (tagName.indexOf('-') > -1) { 
     if (tagName === 'ng-container' || tagName === 'ng-content') { 
     return false; 
     } 

     if (schemaMetas.some((schema) => schema.name === CUSTOM_ELEMENTS_SCHEMA.name)) { 
     // Can't tell now as we don't know which properties a custom element will get 
     // once it is instantiated 
     return true; 
     } 
} 

https://github.com/angular/angular/blob/2.4.8/modules/%40angular/compiler/src/schema/dom_element_schema_registry.ts#L290

так что-то вроде my-row должен работать

+0

Я очень ценю ссылку на источник! +1 –

3

Ниже приведены ваши ошибки

  1. Вы импортировали только AppComponent, но он не имеет элемента с <row> в качестве шаблона.
  2. CUSTOM_ELEMENTS_SCHEMA не должен использоваться во время разработки приложения, поскольку он используется для скрытия вызванных ошибок, когда шаблоны обрабатываются (как указано в описании ошибки).
  3. <app-root> - это селектор для вашего AppComponent, но вы использовали <row> в своем html AppComponent.

Основываясь на ваших требованиях, я могу предложить с различными исправлениями. Комментарий с вашим желаемым результатом, и я буду обновлять ответ на основе их.

 Смежные вопросы

  • Нет связанных вопросов^_^