【问题标题】:angular7:- one component into two siblings component角度:- 一个组件变成两个兄弟组件
【发布时间】:2019-12-02 14:44:18
【问题描述】:

我有一个angular 组件,它每月显示angular-calendar(2019 年 1 月,2019 年 2 月...)。我展示了 6 个月,并且还有 navigation 按钮来来回移动 calendar 个月。首先,我创建了一个组件并在那里实现了所有逻辑。但我需要为angular-calendar 创建单独的组件,为navigation 按钮创建单独的组件。 这是工作示例的stackblitz:-https://stackblitz.com/edit/ang-c-p-7qundm

<!--code for navigation-->
   <div class="display-calendar">
    <button class="btn btn-sm btn-primary" (click)="getNextData()">Click next</button>

    <button class="btn btn-sm btn-primary" (click)="getPreviousData()">Click previous </button>
  </div>
<!--code for calendar months-->
      <div class="row-items"  *ngFor="let month of months">
        <mat-calendar [dateClass]="dateClass()" [startAt]="month" [selected]="selectedDate"
          (selectedChange)="onSelect($event)"></mat-calendar>
      </div>

Ts 代码

 ngOnInit() {
      this.getMonths(this.year, this.month);
    }
  //show calendar in months
    getMonths(year:number, month:number) { 
    this.months = [];
      for (let i = 0; i < 6; i++) {
        this.months.push(new Date(year, month++));
      }
    }
  //navigation for next Month
    getNextData() {
     if(this.curMonth+1 > this.month && this.curYear+1 >= this.year){
       this.month++
     }
     this.getMonths(this.year, this.month); 
    }
  //Navigation for previous Months
    getPreviousData(){
     if(this.curMonth-12 < this.month){
       this.month--
     }
     this.getMonths(this.year, this.month);
    }

我正在考虑使用服务或输入法。但我很困惑。

this.getMonths(this.year, this.month); 

此方法需要在导航组件和日历组件中调用

【问题讨论】:

    标签: angular angular-calendar


    【解决方案1】:

    想象你有

    <navigation-control [calendar]="calendar"></navigation-control>
    <multiple-calendar #calendar></multiple-calendar #calendar>
    

    您可以从导航控件中

    @Input() calendar:any
    next()
    {
       this.calendar.month++;
       //or this.calendar.next()
    }
    prev()
    {
       this.calendar.month--;
       //or this.calendar.prev()
    
    }
    

    这只是一个想法

    【讨论】:

    • 仍然很困惑,如何在 HTML 端调用 next() 和 prev()。我的意思是点击时,代码如何知道它的下一个方法或上一个方法
    • 可以#calendar>,calendar是一个函数,calendar(){..}?
    • 您将“日历”作为输入,即“多日历”组件,因此您可以使用该组件的所有公共变量或所有公共函数。我想象你的“navigation-calendar”有两个按钮调用navigation-calendar.ts的功能,从这个.ts你可以调用其他组件的功能或变量
    • 像 child1.ts:=> calndaer(){....} child2:=> this.calndaer() ???
    猜你喜欢
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 2017-02-14
    • 1970-01-01
    • 2021-02-04
    相关资源
    最近更新 更多