首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NullInjectorError角材料

NullInjectorError角材料
EN

Stack Overflow用户
提问于 2022-07-25 09:47:49
回答 1查看 153关注 0票数 0

我正试图为我的应用程序创建一个可重用的组件工具栏,但我遇到了以下问题:

代码语言:javascript
运行
复制
Error: Uncaught (in promise): NullInjectorError: R3InjectorError(AppModule)[MatSidenavContainer -> MatSidenavContainer -> MatSidenavContainer]: 
  NullInjectorError: No provider for MatSidenavContainer!
NullInjectorError: R3InjectorError(AppModule)[MatSidenavContainer -> MatSidenavContainer -> MatSidenavContainer]: 
  NullInjectorError: No provider for MatSidenavContainer!

我怎么才能修好它呢?我想在我的类中将我的组件与选择器应用程序-工具栏一起使用。但是每当我尝试的时候我都会犯这个错误

app.module.ts

代码语言:javascript
运行
复制
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { RegistrationFormComponent } from './registration-form/registration-form.component';
import { NgModule } from '@angular/core';
import { AngularMaterialModule } from './angular-material-module/angular-material.module';
import { LoginFormComponent } from './login-form/login-form.component';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { RouterModule, Routes } from '@angular/router';
import { FeedComponent } from './feed/feed.component';
import { VerificationLinkComponent } from './verification-link/verification-link.component';
import { AuthGuard } from './guard/auth-guard.service';
import { ProfileComponent } from './profile/profile.component';
import { ResendVerificationComponent } from './resend-verification/resend-verification.component';
import { ToolbarComponent } from './toolbar/toolbar.component';
//import { HttpInterceptorService} from './services/http-interceptor.service'


const routes: Routes = [
  {path: '', redirectTo:'login',pathMatch:'full'},
  {path: 'register', component:RegistrationFormComponent},
  {path: 'login', component:LoginFormComponent},
  {path: 'feed', component:FeedComponent, canActivate: [AuthGuard]},
  {path: 'resendVerificationLink/:id', component: ResendVerificationComponent},
  {path: 'verifyRegistration',component: VerificationLinkComponent},
  {path: 'profile/:id', component: ProfileComponent}

];

@NgModule({
  declarations: [
    AppComponent,
    ToolbarComponent,
    RegistrationFormComponent,
    LoginFormComponent,
    FeedComponent,
    VerificationLinkComponent,
    ProfileComponent,
    ResendVerificationComponent
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    AngularMaterialModule,
    HttpClientModule,
    [RouterModule.forRoot(routes)]
  ],
  exports: [RouterModule],
  providers: [
    AuthGuard,
    // {
    //   provide: HTTP_INTERCEPTORS,
    //   useClass: HttpInterceptorService,
    //   multi: true
    // }
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

angular-material.module.ts --这就是我为所有角材料导入创建一个独立模块的地方。

代码语言:javascript
运行
复制
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MatNativeDateModule } from '@angular/material/core';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { MatSortModule } from '@angular/material/sort';
import { MatTableModule } from '@angular/material/table';
import { MatIconModule } from '@angular/material/icon';
import { MatSelectModule } from '@angular/material/select';
import { MatRadioModule } from '@angular/material/radio';
import { MatButtonModule } from '@angular/material/button';
import {MatCardModule} from '@angular/material/card';
import { FormsModule, ReactiveFormsModule  } from '@angular/forms'; 
import {MatSidenavModule} from '@angular/material/sidenav';
import { MatToolbarModule} from '@angular/material/toolbar';
import {MatListModule} from '@angular/material/list'
import {TextFieldModule} from '@angular/cdk/text-field';
@NgModule({
  declarations: [],
  exports: [
    CommonModule,
    MatRadioModule,
    MatFormFieldModule,
    MatSelectModule,
    FormsModule,
    MatIconModule,
    MatTableModule,
    MatSortModule,
    MatFormFieldModule,
    MatInputModule,
    MatDatepickerModule,
    MatNativeDateModule,
    MatIconModule,
    MatSelectModule,
    MatRadioModule,
    MatButtonModule,
    MatCardModule,
    ReactiveFormsModule,
    MatSidenavModule,
    MatToolbarModule,
    MatListModule,
    TextFieldModule 
  ]
})
export class AngularMaterialModule { }

toolbar.component.html

代码语言:javascript
运行
复制
<mat-toolbar color="primary">
    <mat-toolbar-row>
      <button mat-icon-button>
        <mat-icon (click)="sidenav.toggle()">menu</mat-icon>
      </button>
      <h1>Twitter</h1>
    </mat-toolbar-row>
    <mat-toolbar-row>
        <ng-container>
            <img class="twitter" src="assets/twitter.png" alt="">
        </ng-container>
      </mat-toolbar-row>
    </mat-toolbar>

    <mat-sidenav-container>
        <mat-sidenav #sidenav>
          <mat-nav-list>
            <a mat-list-item [routerLink]="'/feed'"><mat-icon>home</mat-icon>Feed</a>
            <a mat-list-item [routerLink]="['/profile',getProfile()]"><mat-icon>person_outline</mat-icon>Profile</a>
            <a mat-list-item (click)="authService.logout()" [routerLink]="'/login'" *ngIf="authService.isUserLoggedIn()"><mat-icon>exit_to_app</mat-icon>Logout</a>
            <a mat-list-item (click)="sidenav.toggle()"> Close</a>
          </mat-nav-list>
        </mat-sidenav>
    </mat-sidenav-container>

toolbar.component.ts

代码语言:javascript
运行
复制
import { Component, OnInit } from '@angular/core';
import { AuthenticationService } from '../security-login/authentication.service';
import { AngularMaterialModule } from '../angular-material-module/angular-material.module';
@Component({
  selector: 'app-toolbar',
  templateUrl: './toolbar.component.html',
  styleUrls: ['./toolbar.component.css']
})
export class ToolbarComponent implements OnInit {

  constructor(public authService: AuthenticationService) { }

  ngOnInit(): void {
  }

  getProfile() {
    const id = sessionStorage.getItem('userId');
    return id;
  }
}
EN

回答 1

Stack Overflow用户

发布于 2022-10-04 21:24:07

确保mat-drawer-contentmat-drawer-container.中

代码语言:javascript
运行
复制
<mat-drawer-container>
  <mat-drawer></mat-drawer>
  <mat-drawer-content></mat-drawer-content>
</mat-drawer-container>

就我而言,我的结构错误,如下所示:

代码语言:javascript
运行
复制
<mat-drawer-container>
  <mat-drawer></mat-drawer>
</mat-drawer-container>
<mat-drawer-content></mat-drawer-content>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73107187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档