You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular Material SideNav双向绑定[(mode)]报错求助

解决Angular Material SideNav [(mode)]双向绑定报错问题

错误原因

Angular的双向绑定语法[(xxx)]要求组件同时提供@Input() xxx输入属性和@Output() xxxChange输出事件。但MatSidenav组件的mode属性仅为输入属性,没有对应的modeChange输出事件,因此无法使用双向绑定,这就是报错的核心原因。

解决方案

将双向绑定[(mode)]改为单向属性绑定[mode]即可,你的场景是通过媒体查询主动控制sideNavMode的值,不需要从组件接收mode的反向变更通知,单向绑定完全满足需求。

修改后的HTML代码

<div class="layout-container">
  <app-top-nav (sideNavToggled)="snav.toggle()"></app-top-nav>

  <mat-sidenav-container class="sidenav-container" [style.marginTop.px]="toolBarHeight">
    <!-- 替换双向绑定为单向绑定 -->
    <mat-sidenav #snav class="sidenav mat-elevation-z10" [(opened)]="sideNavOpened" [mode]="sideNavMode" >
      <app-side-nav></app-side-nav>
    </mat-sidenav>
    <mat-sidenav-content>
      <main class="main-container">
        <router-outlet></router-outlet>
      </main>
    </mat-sidenav-content>
  </mat-sidenav-container>
</div>

额外说明

  • MatSidenav的opened属性支持双向绑定,因为它同时提供了@Input() opened和@Output() openedChange,所以[(opened)]的写法是合法的。
  • 你的TS逻辑无需修改,媒体查询控制sideNavMode的代码可以正常工作,单向绑定会自动同步组件的mode值。

内容的提问来源于stack exchange,提问作者Văn Thuận Nguyễn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 14:45:23