首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mat-datepicker在不同位置打开

mat-datepicker在不同位置打开
EN

Stack Overflow用户
提问于 2021-06-09 16:15:45
回答 1查看 205关注 0票数 0

我把我的mat-datepicker放在页面上的两个地方。当我点击一个地方时,它会打开一个相反的地方。我怎么才能修复它呢?我有两个不同的组件与mat-datepicker,但它打开不同。也许问题是我模仿点击一个组件?但是为什么它会打开另一个呢?下面是代码

打开此处:(child.components.html)

代码语言:javascript
复制
<mat-form-field appearance="fill">
      <input matInput [matDatepicker]="picker">
      <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
      <mat-datepicker #picker ngDefaultControl></mat-datepicker>
    </mat-form-field>

点击此处:(parent.component.html)

代码语言:javascript
复制
<mat-form-field appearance="fill">
        <mat-label>Choose a date</mat-label>
        <input [min]="minDate" (dateInput)="onDate($event)" matInput [matDatepicker]="picker" (keydown)="false">
        <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
        <mat-datepicker #picker ngDefaultControl></mat-datepicker>
      </mat-form-field>

Onchange事件按如下方式打开日历:

代码语言:javascript
复制
 public onTabChange(event: MatButtonToggleChange): void {
      setTimeout(() => {
        const element: HTMLElement = document.getElementsByClassName('mat-icon-button')[0] as HTMLElement;
        element.click();
      }, 200);
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-09 17:28:45

尝试给出不同的“模板引用变量”(将一个#picker替换为#picker2,将picker替换为picker2

关于模拟点击(这不是问题),我建议使用ViewChild并直接使用open方法

代码语言:javascript
复制
import {MatDatepicker} from '@angular/material/datepicker';

@ViewChild('picker2') datepicker:MatDatepicker<any>

public onTabChange(event: MatButtonToggleChange): void {
      setTimeout(() => {
        this.datepicker.open()
      });
  }

请注意,您不需要“等待”200毫秒。setTimeout对angular说:“嘿,你!,重新绘制应用程序,之后,记住在setTimeout下执行代码”,如果你使用change detector并使用.markForCheck(),也会发生同样的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67900175

复制
相关文章

相似问题

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