Dieses Forum ist archiviert und nur noch lesbar.

Ionic @NgModule Error

22 Beiträge, 1737 Aufrufe

nichtwitzig228

Ich Arbeit aktuell an einer App mit Ionic, dem bekannten framework das html/typescript code in apk’s und ipa’s umwandelt. Als ich zuletzt versucht habe mit dem Cordova plugin Local Notifications eine seite mit buttons zu machen die mir benachrichtigungen auf dem handy anzeigen, hab ich folgenden error bekommen:

Error: Unexpected value 'LocalNotifications' imported by the module 'AppModule'. Please add a @NgModule annotation.
Im folgenden noch die notification.page.ts:
import { Component, OnInit } from '@angular/core';
import { LocalNotifications, ELocalNotificationTriggerUnit } from '@ionic-native/local-notifications/ngx';
import { Platform, AlertController } from '@ionic/angular';
import { ThrowStmt } from '@angular/compiler';

@Component({
  selector: 'app-notifications',
  templateUrl: './notifications.page.html',
  styleUrls: ['./notifications.page.scss'],
})
export class NotificationsPage implements OnInit {

  scheduled = [];

  constructor(private plt: Platform, private localNotifications: LocalNotifications, private alertCtrl: AlertController) {
    this.plt.ready().then(() => {
      this.localNotifications.on('click').subscribe(res => {
        console.log('click: ', res);
        let msg = res.data ? res.data.mydata : '';
        this.showAlert(res.title, res.text, msg);
      });

      this.localNotifications.on('trigger').subscribe(res => {
        console.log('trigger: ', res);
        let msg = res.data ? res.data.mydata : '';
        this.showAlert(res.title, res.text, msg);
      })
    });
  }

  ngOnInit() {
    
  }

  sN() {
    this.localNotifications.schedule({
      id: 1,
      title: 'Attention',
      text: 'Musterman macht eine App',
      data: { mydata: 'My hidden message this is'},
      trigger: { in: 5, unit: ELocalNotificationTriggerUnit.SECOND }
    })
  }

  rN() {
    this.localNotifications.schedule({
      id: 22,
      title: 'Recurring',
      text: 'Mustermann macht eine App rec',
      trigger: { every: ELocalNotificationTriggerUnit.MINUTE }
    })
  }

  rD() {
    this.localNotifications.schedule({
      id: 42,
      title: 'Good Morning',
      text: 'Code smth epic today',
      trigger: { every: { hour: 11, minute: 50} }
    })
  }

  getAll() {
    this.localNotifications.getAll().then(res => {
      this.scheduled = res;
    });
  }

  showAlert(header, sub, msg) {
    this.alertCtrl.create({
      header: header,
      subHeader: sub,
      message: msg,
      buttons: ['Ok']
    }).then(alert => alert.present())
  }

}

Ich hab überall gesucht und absolut kein gleichen Error oder irgendeine Lösung gefunden die mir weiterhilft. Falls die Frage aufkommt:

Ja ich habe das Modul in der app.module.ts eingebunden

Ich hoffe wirklich mir kann jemand weiterhelfen

Mfg

Max

Ian

Hi Max,

das sieht aus als liegt der Fehler in deiner app.module.ts. Kannst du die bitte auch noch posten?

nichtwitzig228Antwort auf #2

Gern hier

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy, RouterModule } from '@angular/router';

import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

import { HttpClientModule } from '@angular/common/http'; 
import { IonicStorageModule } from '@ionic/storage';

import { LocalNotifications } from '@ionic-native/local-notifications/ngx';

@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [
    BrowserModule, 
    IonicStorageModule.forRoot(), 
    AppRoutingModule, 
    IonicModule.forRoot(), 
    HttpClientModule,
    LocalNotifications 
  ],
  providers: [
    StatusBar,
    SplashScreen,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

So wie man hier sieht hab ich das plugin wie jedes andere auch als imports hinzugefügt

Ian

Versuch mal das LocalNotifications unter providers zu importieren, nicht unter imports

nichtwitzig228Antwort auf #6
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy, RouterModule } from '@angular/router';

import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

import { HttpClientModule } from '@angular/common/http'; 
import { IonicStorageModule } from '@ionic/storage';

import { LocalNotifications } from '@ionic-native/local-notifications/ngx';

@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [
    BrowserModule, 
    IonicStorageModule.forRoot(), 
    AppRoutingModule, 
    IonicModule.forRoot(), 
    HttpClientModule,
    LocalNotifications 
  ],
  providers: [
    StatusBar,
    SplashScreen,
    LocalNotifications,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

Ja ich habs via command line installiert

IanAntwort auf #7

Das ist doch nochmal die selbe oder nicht?
Du müsstest die LocalNotifications aus dem import-Array ins providers-Array verschieben

nichtwitzig228Antwort auf #8

wie genau soll ich einfach ein neues providers array aufmachen und dann da reinschreiben?

upsi falsches script

IanAntwort auf #9

Nein, einfach in das Bestehende übernehmen:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy, RouterModule } from '@angular/router';

import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

import { HttpClientModule } from '@angular/common/http'; 
import { IonicStorageModule } from '@ionic/storage';

import { LocalNotifications } from '@ionic-native/local-notifications/ngx';

@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [
    BrowserModule, 
    IonicStorageModule.forRoot(), 
    AppRoutingModule, 
    IonicModule.forRoot(), 
    HttpClientModule
  ],
  providers: [
    StatusBar,
    SplashScreen,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
    LocalNotifications 
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}
nichtwitzig228Antwort auf #10

jap immer noch gleicher error
Ich hab keine ahnung was ich machen soll
ich hab schon so gut wie alles probiert

Falls es hilft:

Tutorial zum Installieren: (click)
Tutorial für die Notification page: (click)

Beiden bin ich gefolgt

Ok kurzes update
habe gesehen das bei oben gennantem youtube tutorial (click) die app mit angular generiert wurde

das hab ich nicht so
vieleicht liegt es daran
kann man angular noch im nachhinein installieren?

nichtwitzig228Antwort auf #12

also die app ist schon mit ionic gemacht aber mit dem projekt type angular
ich probier gerade den auf ionic-angular zu stellen
steht alles in der ionic.config.json
aber sieht nicht so aus als ob es daran liegt

gibt es sonst noch was das ich ausprobieren kann?

weil wie gesagt ich hab bestimmt seit 1er woche nach einem zumindest „ähnlichen error“ gesucht und nichts gefunden das geklappt hat

und ich werd auch selber nicht schlau aus dem error
also ich weis schon das es vom app.module.ts kommt und was mit den NgModule imports zutuhn hat
aber ich komm echt net weiter

Ian

Hast du es denn mal wie ich geschrieben hab mit meinem Tutorial in einem neuen Projekt ausprobiert?

nichtwitzig228Antwort auf #15

meinst du mit dem tutorial?

nichtwitzig228

So wie es aktuell aussieht (bin noch nicht ganz fertig mit compilen) geht es

Es könnte noch an etwas anderes legen

und zwar hab ich meine app nach diesen tutorial erstellt (click) und ich glaub im laufe dieses tutorials wurden paar sachen verändert

nichtwitzig228

Für alle die Zukünftig dieses Problem haben sollten:

Überprüft unbedingt das ihr das module auf gar keinen fall in eure imports in die app.module.ts reinhaut sondern NUR unter die providers