Я пытаюсь перенести мой проект Angular на NativeScript.
Всякий раз, когда я пытаюсь запустить tns run android --bundle
, я получаю следующую ошибку:
JS ERROR Error: Uncaught (in promise): Error:
StaticInjectorError(AppModule)[MatSnackBar -> Overlay]:
JS: StaticInjectorError(Platform: core)[MatSnackBar -> Overlay]:
JS: NullInjectorError: No provider for Overlay!
JS: Error: NullInjectorError: No provider for Overlay!
Моя структура выглядит так:
src
|- app
|- search
|- search.component.ts # MatSnackBar is in here
|- material
|- material.module.ts # MatSnackBarModule import is here
|- app.module.ts # imports MaterialModule(^) and OverlayModule`
Просмотр в Интернете не дал ирезультаты для меня.
app.module.ts:
import ...
@NgModule({
imports: [
...
MaterialModule,
OverlayModule,
...
],
declarations: [
AppComponent,
...
SearchComponent,
...
],
providers: [],
bootstrap: [AppComponent],
})
export class AppModule {}
material.module.ts:
import ...
@NgModule({
imports: [
...
MatSnackBarModule,
],
exports: [
...
MatSnackBarModule,
],
declarations: [],
})
export class MaterialModule { }
search.component.ts:
import ...
import { MatSnackBar } from '@angular/material';
import { MaterialModule } from '../material/material.module';
@Component({
selector: 'app-search',
templateUrl: './search.component.html',
styleUrls: ['./search.component.css'],
providers: [MaterialModule, MatSnackBar]
})
export class SearchComponent implements OnInit {
constructor(private snackBar: MatSnackBar) { }
openSnackBar() {
this.snackBar.open('Sorry' , 'Close' , {
duration: 3000
});
}
}
Интересно, что он правильно работает с ng serve
, но не с вышеупомянутой командой.
edit: удаление MatModuls из SearchComponent дает следующееошибка:
JS: ERROR Error: Uncaught (in promise): Error:
StaticInjectorError(AppModule)[SearchComponent -> MatSnackBar]:
JS: StaticInjectorError(Platform: core)[SearchComponent -> MatSnackBar]:
JS: NullInjectorError: No provider for MatSnackBar!
JS: Error: NullInjectorError: No provider for MatSnackBar!