2016-10-22 36 views
32

Melez Angular1 ve Angular2 uygulama var. Gittiğim Angular2 bileşenlerinden birinde, bir Malzeme Tasarımı Düğmesi kullanmak istiyorum. BaşvuruMalzeme tasarım bileşeni "bilinen bir öğe değil" Angular2 içinde

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. ("<h1>Job</h1>[ERROR ->]<md-button>material</md-button>"): [email protected]:12 
    at TemplateParser.parse (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:8321:21) 

Yani bu konsol mesajla çökmesini başlar bu <md-button>foo</md-button> gibi şablonuna bir düğme eklediğinizde bu mesajda durum 1'dir gibi

, bu gelebilir, ama ben tavsiye denedi benim NgModule (the documentation tarafından tavsiye edilen MaterialModule.forRoot() içerir) özelliği eklemek için verilen, ancak tüm uygulama konsolunda hata olmadan boş gidiyor. İşte

bunu doğrudan does't angular2 yeni bileşen eklerken, ilgili kod bazı

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"]); 
+0

'MaterialModule.forRoot(),' yerine şunu eklediniz: '' root '@NgModule() 'nizi içe aktarın: [...] (https://github.com/angular/material2/blob/ fcc5900e496adc5b11e47ad1e6d3e0c2ac2bad9e/GETTING_STARTED.md)? –

+0

Lütfen ilgili kodu gösterebilir misiniz? – micronyks

+1

@ GünterZöchbauer Yaptım. –

cevap

42

O Bazen

<button md-button>foo</button> 

VEYA

<button md-raised-button>foo</button> 
+0

html'de 'md-' bileşenlerini kullanamayacağımı mı söylüyorsunuz? Bunu yapabilmen gerektiğine inanıyorum. Örnek: https://github.com/kara/leashed-in/blob/master/src/app/app.component.html –

+0

Sanırım malzemede düğmeyi bildirmenin eski yolu. – micronyks

+1

Doh, bu kadar basitti. Teşekkürler! –

-1

olmalıdır olduğunu Bu tür durumlarda etiketi kaydetmeniz gereken 2 şey yapmanız gerekir:

Git) dosyası

  • 1 app.component.ts "ithalat {bileşeni}" elle yerleştirin istediğiniz düğmesi bileşeni kayıt @Component yılında
  • 2) eklemek ve yolu vermek
+0

Yeni bileşen "app.module.js" içinde eklenir ve açısal kısayol kullanılarak otomatik olarak kullanılır: "ng bileşen bileşeni aNewComponent" – pdem

+0

Additionnaly özel bir bileşen sorunu değildi, açıklamak özel bir bileşen neslidir) ama benim durumumu araştırmama yardımcı oldu, kendi sorumu sormalıydım :) – pdem

İlgili konular