2016-04-13 1 views
0

Ich versuche ng2-material mit angular2 zu verwenden.ng2-material TypeError: all_2.Media.hasMedia ist keine Funktion

Beim Versuch Sidenav Komponente, erhalte ich diese Fehler:

EXCEPTION: TypeError: all_2.Media.hasMedia is not a function in [hasMedia('gt-sm') ? 'side' : 'over' in [email protected]:32]

EXCEPTION: Error: Uncaught (in promise): EXCEPTION: TypeError: all_2.Media.hasMedia is not a function in [hasMedia('gt-sm') ? 'side' : 'over' in [email protected]:32] ORIGINAL EXCEPTION: TypeError: all_2.Media.hasMedia is not a function ORIGINAL STACKTRACE: TypeError: all_2.Media.hasMedia is not a function at AppComponent.hasMedia (http://localhost:3000/app/app.component.js:67:40) at AbstractChangeDetector.ChangeDetector_AppComponent_0.detectChangesInRecordsInternal (viewFactory_AppComponent:114:31) at AbstractChangeDetector.detectChangesInRecords (http://localhost:3000/node_modules/angular2/bundles/angular2.dev.js:9609:14) at AbstractChangeDetector.runDetectChanges (http://localhost:3000/node_modules/angular2/bundles/angular2.dev.js:9592:12) at AbstractChangeDetector._detectChangesInViewChildren (http://localhost:3000/node_modules/angular2/bundles/angular2.dev.js:9671:14) at AbstractChangeDetector.runDetectChanges (http://localhost:3000/node_modules/angular2/bundles/angular2.dev.js:9596:12) at AbstractChangeDetector.detectChanges (http://localhost:3000/node_modules/angular2/bundles/angular2.dev.js:9581:12) at ChangeDetectorRef_.detectChanges (http://localhost:3000/node_modules/angular2/bundles/angular2.dev.js:5252:16) at http://localhost:3000/node_modules/angular2/bundles/angular2.dev.js:12954:27 at Array.forEach (native) ERROR CONTEXT: [object Object]

Und es gibt viele weitere Fehler alle all_2.Media.hasMedia

Zusammenhang

Wahrscheinlich ist dies der Code, der es verursacht werden könnten

hasMedia(breakSize: string): boolean { 
    return Media.hasMedia(breakSize); 
} 

Ich habe die instructions on ng2-material site gefolgt und bereits ng2-Material arbeiten G.

Wie soll ich das lösen?

Antwort

-1

Sie verwenden den Beispielcode wie er ist. Wie Sie sehen können, ruft es irgendwo eine "hasMedia()" Methode auf. Dies muss in Ihrer Komponente definiert werden. all_2 etwas wie das zeigt nur auf Ihren Kontext.

+0

habe ich hasMedia() in meiner Komponente definiert:

constructor(public sidenav: SidenavService, public media: Media) { } hasMedia(breakSize: string): boolean { return this.media.hasMedia(breakSize); } 

wie jetzt auf die NG2-Material Website erklärt und wird aufgerufen, da ich console.log in der Methode verwendet und überprüft habe. Jetzt ruft meine Funktion auch eine hadMedia() von der Medienkomponente in der Bibliothek auf. Überprüfen Sie einfach die Demo-Seite, die ich in der ersten Zeile meiner Frage erwähnt habe. – Shri

0

Das Codebeispiel, das ursprünglich auf ng2-material veröffentlicht wurde, wurde mit einer festen Version aktualisiert. Das stolperte mich auch und ich sah den gleichen Fehler, den Shri gepostet hatte. Das Update ist Medien in die Klasse zu injizieren und die Klasse lokale Version verwenden:

https://justindujardin.github.io/ng2-material/#/components/sidenav

+0

beziehen Sie sich auf diesen Thread, um diese Antwort zu erhalten? https://github.com/justindujardin/ng2-material/issues/167 – Shri

+0

Nein, ich habe gerade die Dokumentation von ng2-material überarbeitet –