angular angular-material

angular - NullInjectorError: no hay proveedor para ViewportScroller



angular-material (2)

¿Ya has importado así?

Asegúrese de incluir el componente también

RouterModule.forRoot([{ path: ''some-view'', component: SomeViewComponent}], { anchorScrolling: ''enabled'', scrollPositionRestoration: ''enabled''})

Estoy construyendo una aplicación angular simple, usando material angular para diseñar el front-end. La aplicación solo tiene 2 componentes representados en la misma página. Cuando sirvo la aplicación, esto se devuelve en la consola:

NullInjectorError: "StaticInjectorError (AppModule) [RouterScroller -> ViewportScroller]: StaticInjectorError (Platform: core) [RouterScroller -> ViewportScroller]: NullInjectorError: ¡No hay proveedor para ViewportScroller!"

AppModule.ts

import { BrowserModule } from ''@angular/platform-browser''; import { NgModule } from ''@angular/core''; import { AppRoutingModule } from ''./app-routing.module''; import { AppComponent } from ''./app.component''; import { Material } from ''./Material''; import { DataFormComponent } from ''./data-form/data-form.component''; import { TemplateFormComponent } from ''./template-form/template-form.component''; import { FormsModule } from ''@angular/forms''; @NgModule({ declarations: [ AppComponent, DataFormComponent, TemplateFormComponent, ], imports: [ BrowserModule, AppRoutingModule, Material, FormsModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }

appComponents.ts

import { Component } from ''@angular/core'';

Material.ts (módulo para todos los componentes de material angular)

import {BrowserAnimationsModule} from ''@angular/platform-browser/animations''; import {NgModule} from ''@angular/core''; import {MatTabsModule} from ''@angular/material/tabs''; import {MatInputModule} from ''@angular/material''; import {MatCardModule} from ''@angular/material/card''; import {MatToolbarModule} from ''@angular/material/toolbar''; import {MatFormFieldModule} from ''@angular/material/form-field''; import {MatButtonModule} from ''@angular/material/button''; @NgModule({ imports: [ BrowserAnimationsModule, MatTabsModule, MatCardModule, MatToolbarModule, MatFormFieldModule, MatInputModule, MatButtonModule ], exports: [ BrowserAnimationsModule, MatTabsModule, MatCardModule, MatToolbarModule, MatFormFieldModule, MatInputModule, MatButtonModule ], }) export class Material { } @Component({ selector: ''app-root'', templateUrl: ''./app.component.html'', styleUrls: [''./app.component.css''] }) export class AppComponent { title = ''forms''; }

AppRoutingModule.ts:

import { NgModule } from ''@angular/core''; import { Routes, RouterModule } from ''@angular/router''; import { CursoModule } from ''./curso/curso.module''; const routes: Routes = [ { path: '''', pathMatch: ''full'', redirectTo: ''curso'' }, { path: ''curso'', loadChildren: ''./curso/curso.module#CursoModule'' } ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { }

cursp-routing.module.ts:

import { CursosComponent } from ''./cursos.component''; import { RouterModule } from ''@angular/router''; import { NgModule } from ''@angular/core''; import { CursoListaComponent } from ''./curso-lista/curso-lista.component''; const routes = [ { path: '''', component: CursoListaComponent } ] @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] }) export class CursoRouting { }


Tuve el mismo error: actualizar Angular en un proyecto me funciona (es un proyecto nuevo con solo material angular, pocos componentes simples y enrutamiento simple).

ng update @angular/cli @angular/core

https://update.angular.io/#7.2:8.0

El error ocurrió después de que lo hice:

npm install -S @angular/material @angular/cdk @angular/animations npm uninstall @angular/core npm install -S @angular/core

como solución para el error "exportar ''ɵɵinject'' no se encontró en ''@ angular / core'' (lanzado después de agregar material angular a un proyecto nuevo).

Funcionó hasta que agregué enrutamiento y obtuve NullInjectorError: No hay proveedor para ViewportScroller . Pero como se mencionó al principio, actualizar todo el proyecto a Angular v8 parece la solución.