1

I have on array of years links like this:

<div class="header-years-container default-color">
              <a class="years-items"  *ngFor="let year of yearsLink;" [ngClass]="{'active': selectedYear === year}" (click)="onSelectYear($event.target.innerText)">
                  {{ year }}
                </a>
            </div>

and one property that show data for selectedYear. In ngOnInit method I set default value from array but I want to pass other value of year when user click on that. In Typescript looks this:

ngOnInit() {
    this.yearsLink = [...new Set(this.absenceWidgetService.getAbsencesData().map(item => item.year))];
    this.selectedYear = this.yearsLink[0];


    this.selectedYear = this.onSelectYear(this.selectedYear);
    this.absences = this.absenceWidgetService.getAbsencesData(this.selectedYear)
  }

onSelectYear(value): string {
    return this.selectedYear = value;
  }

How can I pass each time correct value for selectedYear in getAbsenceData method when user do click event ? Currently I always have default value..

Thanks.

3 Answers 3

1

Have you tried it like this yet?

HTML:

<div class="header-years-container default-color">
    <a class="years-items"  *ngFor="let year of yearsLink;" [ngClass]="{'active': selectedYear === year}" (click)="onSelectYear(year)">
        {{ year }}
    </a>
</div>

TS:

onSelectYear(year) {
    this.selectedYear = year;
}
Sign up to request clarification or add additional context in comments.

Comments

0

You don't need to use $event, You can directly pass year as an argument in function

<div class="header-years-container default-color">
     <a class="years-items"  *ngFor="let year of yearsLink;" [ngClass]="{'active': selectedYear === year}" 
     (click)="onSelectYear(year)">{{ year }}</a>
</div>

1 Comment

It' does not metter.the same thing..don't pass a new value selectedYear only default.
0

I've resolved issue when I moved data source property fill in event method. There is default value in ngOnInit() for this property and for each click event pass a new value.

It looks like this:

ngOnInit() {
    this.yearsLink = [...new Set(this.absenceWidgetService.getAbsencesData().map(item => item.year))];
    this.selectedYear = this.yearsLink[0];

    this.absences = this.absenceWidgetService.getAbsencesData(this.selectedYear)
  }

onSelectYear(year) {
    this.selectedYear = year;
    this.absences = this.absenceWidgetService.getAbsencesData(this.selectedYear);
  }

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.