如何将一个组件的行为与另一个组件分开 [Angular]

How to separate behavior of one component from the other [Angular]

我正在学习 Angular。我从头开始创建了一个 datepicker(*为什么从头开始是另一回事)。如您所见,我在同一个小部件中有两个日期选择器自定义组件。两者的代码相同。我只是复制并粘贴到同一个 HTML 文件中。

这是我的monthpicker.component.html

注意:dls 是我们自己的基本 html 组件库,例如文本字段等。请忽略它。

....
<div class="dropdown">
  <span>
    <dls-textbox id="upper">
        <input dlsInput [ngModel]="text" placeholder="...">
    </dls-textbox>
  </span>
  <div class="my-table-div dropdown-content">
    <div class="year-div">
        <input type="number" [(ngModel)]="year" value="2019" min="2018" max="2024">
    </div>
    <br>
    <div *ngFor="..." class="my-table">
      <span *ngFor="...">
        <span class="month-name" (click)="onClick(x);">
          {{ x.monthName }} 
        </span>
      </span>
    </div>
</div>

<!-- A TOGGLE SWITCH GOES HERE-->

<!-- THEN SAME DATE PICKER CODE I COPIED BELOW-->
<div class="dropdown">
  ...
</div>

但问题是,在一个日历中选择的日期也会反映在后一个日历中。

我也尝试通过更改 idclass 将它们分开。但他们两个仍然在一起回应。我希望他们独立行动。

请指正。

确保您应该用另一个日期清除您选择的日期。 Make "ID" 每个组件应该不同。

尝试更改 ngModel 值。

 <div class="year-div">
        <input type="number" [(ngModel)]="year" value="2019" min="2018" max="2024">
   </div>

如果您为两个 ngModel 输入相同的值,它也会反映另一个。您需要为每个 ng-model 使用不同的值。

发生这种情况是因为您使用 [ngModel] 将两个输入绑定到同一个变量,因此一个中的更改会反映到另一个中。