Le composant de conception matérielle «n’est pas un élément connu» dans Angular2

J’ai une application hybride Angular1 et Angular2. Dans l’un des composants Angular2 vers lequel je parcours, je souhaite utiliser un bouton de conception de matériau.

Lorsque j’insère un bouton dans le modèle comme celui-ci, foo l’application commence à planter avec ce message de console.

 Error: Template parse errors: 'md-button' is not a known element: 1. If 'md-button' is an Angular component, then verify that it is part of this module. 2. If 'md-button' is a Web Component then add "CUSTOM_ELEMENTS_SCHEMA" to the '@NgModule.schemas' of this component to suppress this message. ("

Job

[ERROR ->]material"): JobComponent@0:12 at TemplateParser.parse (http://localhost:3000/node_modules/@angular/comstackr/bundles/comstackr.umd.js:8321:21)

Donc, cela peut sembler être le cas 1 dans le message, mais j’ai essayé le conseil donné dans cette réponse pour append MdButton à la propriété imports de mon NgModule (qui contenait déjà MaterialModule.forRoot() comme le préconise la documentation ), mais si je le fais, l’application entière devient vide sans erreurs dans la console.

Voici une partie du code pertinent

 import { UIRouterModule } from "ui-router-ng2"; import { Ng1ToNg2Module, uiRouterNgUpgrade } from "ui-router-ng1-to-ng2"; import { MaterialModule, MdButton } from '@angular/material'; const upgradeAdapter: UpgradeAdapter = new UpgradeAdapter( forwardRef(() => XamFlowNg2Module)); uiRouterNgUpgrade.setUpgradeAdapter(upgradeAdapter); angular.module("xamFlow") .factory("consoleService", upgradeAdapter.downgradeNg2Provider(ConsoleService)); /* * Expose our ng1 content to ng2 */ upgradeAdapter.upgradeNg1Provider("restService"); @NgModule({ declarations: [ JobComponent, ], entryComponents: [ // Components that are routed to must be listed here, otherwise you'll get "No Component Factory" JobComponent, ], imports: [ CommonModule, BrowserModule, FormsModule, HttpModule, Ng1ToNg2Module, MaterialModule.forRoot() ], providers: [ ConsoleService, ImageService ] }) class MyModule { } upgradeAdapter.bootstrap(document.body, ["myApp"]); 

CA devrait etre

  

OU

  

Parfois, lorsque vous ajoutez un nouveau composant à l’angular2, il n’enregistre pas directement la balise. Dans ce cas, vous devez faire 2 choses:

Accédez au fichier app.component.ts

  • 1) Insérer manuellement dans “import {component}” le bouton que vous souhaitez append
  • 2) Dans le composant @Component, enregistrez votre composant et donnez le chemin