Size: a a a

Angular - русскоговорящее сообщество

2020 January 16

MP

Michail Pavlov in Angular - русскоговорящее сообщество
Максим
У меня график есть chart.js. Я хочу при обновлении данных его перерисовать, но не хочу использовать метод этой библиотеки для перерисовкм
переопредели метод)
источник

S

Sergey in Angular - русскоговорящее сообщество
Максим
У меня график есть chart.js. Я хочу при обновлении данных его перерисовать, но не хочу использовать метод этой библиотеки для перерисовкм
Ты можешь сделать так:
1. Вынести отдельно компонент с графиком
2. Пробрасывать в него сами данные через @Input()
3. Так как жизненный хук OnChanges срабатывает при изменении инпута, вызывать метод drawChart() в этом хуке

Потом можешь довольным сделать себе кофе и смотреть, как всё работает😁
источник

М

Максим in Angular - русскоговорящее сообщество
Sergey
Ты можешь сделать так:
1. Вынести отдельно компонент с графиком
2. Пробрасывать в него сами данные через @Input()
3. Так как жизненный хук OnChanges срабатывает при изменении инпута, вызывать метод drawChart() в этом хуке

Потом можешь довольным сделать себе кофе и смотреть, как всё работает😁
Я так и делаю, только метод не знаю как вызвать при oncgange, потому что график так задаю
<canvas baseChart *ngIf='oneTrendVar' [datasets]="lineChartData" [options]="lineChartOptions" [colors]="lineChartColors" [legend]="lineChartLegend" [chartType]="lineChartType" (chartHover)="chartHovered($event)" (chartClick)="chartClicked($event)">
источник

YK

Yuri Katkov in Angular - русскоговорящее сообщество
Yuri Katkov
товарищи, у кого есть свежий айфон? Тут у нас на продакшине говорят, что клик по вот этой менюшке не меняет url:
http://jobroom.ch/
<div class="d-block d-md-none w-100"
        ngbDropdown
        placement="bottom">
     <button class="btn btn-secondary btn-block py-1"
             ngbDropdownToggle>
       <small class="d-block">{{'home.toolbar.title' | translate}}</small>
       <span *ngFor="let toolbarButton of toolbarButtons"
             [routerLink]="toolbarButton.route"
             class="route-label"
             routerLinkActive="visible"
             tabindex="-1">
         {{toolbarButton.label | translate}}
       </span>
     </button>
     <div class="w-100"
          ngbDropdownMenu>
       <a *ngFor="let toolbarButton of toolbarButtons"
          [routerLink]="toolbarButton.route"
          class="dropdown-item"
          routerLinkActive="active">
         {{toolbarButton.label | translate}}
       </a>
     </div>
   </div>
источник

YK

Yuri Katkov in Angular - русскоговорящее сообщество
вот что тут может пойти не так?
источник

S

Sergey in Angular - русскоговорящее сообщество
Максим
Я так и делаю, только метод не знаю как вызвать при oncgange, потому что график так задаю
<canvas baseChart *ngIf='oneTrendVar' [datasets]="lineChartData" [options]="lineChartOptions" [colors]="lineChartColors" [legend]="lineChartLegend" [chartType]="lineChartType" (chartHover)="chartHovered($event)" (chartClick)="chartClicked($event)">
Хм, думаю, у тебя вот так должно быть:
<my-chart [data]="тут твои данные"></my-chart>

// my-chart.component.html
<canvas baseChart *ngIf='oneTrendVar' [datasets]="lineChartData" [options]="lineChartOptions" [colors]="lineChartColors" [legend]="lineChartLegend" [chartType]="lineChartType" (chartHover)="chartHovered($event)" (chartClick)="chartClicked($event)">

Как раз в этом компоненте ты сможешь отслеживать изменение твоих инпутов и вызывать перерисовку
источник

М

Максим in Angular - русскоговорящее сообщество
Sergey
Хм, думаю, у тебя вот так должно быть:
<my-chart [data]="тут твои данные"></my-chart>

// my-chart.component.html
<canvas baseChart *ngIf='oneTrendVar' [datasets]="lineChartData" [options]="lineChartOptions" [colors]="lineChartColors" [legend]="lineChartLegend" [chartType]="lineChartType" (chartHover)="chartHovered($event)" (chartClick)="chartClicked($event)">

Как раз в этом компоненте ты сможешь отслеживать изменение твоих инпутов и вызывать перерисовку
Как вызвать перерисовку?
источник

М

Максим in Angular - русскоговорящее сообщество
Sergey
Хм, думаю, у тебя вот так должно быть:
<my-chart [data]="тут твои данные"></my-chart>

// my-chart.component.html
<canvas baseChart *ngIf='oneTrendVar' [datasets]="lineChartData" [options]="lineChartOptions" [colors]="lineChartColors" [legend]="lineChartLegend" [chartType]="lineChartType" (chartHover)="chartHovered($event)" (chartClick)="chartClicked($event)">

Как раз в этом компоненте ты сможешь отслеживать изменение твоих инпутов и вызывать перерисовку
Мне нужно вызвать метод chart.upate(), но у меня нету объекта chart,.  Потому что график я создаю декларативно
<canvas baseChart *ngIf='oneTrendVar' [datasets]="lineChartData" [options]="lineChartOptions" [colors]="lineChartColors" [legend]="lineChartLegend" [chartType]="lineChartType" (chartHover)="chartHovered($event)" (chartClick)="chartClicked($event)">

А на изменение data он не реагирует
источник

S

Sergey in Angular - русскоговорящее сообщество
Максим
Мне нужно вызвать метод chart.upate(), но у меня нету объекта chart,.  Потому что график я создаю декларативно
<canvas baseChart *ngIf='oneTrendVar' [datasets]="lineChartData" [options]="lineChartOptions" [colors]="lineChartColors" [legend]="lineChartLegend" [chartType]="lineChartType" (chartHover)="chartHovered($event)" (chartClick)="chartClicked($event)">

А на изменение data он не реагирует
Ну ты же можешь получить через ViewChild - baseChart
Если я правильно понял, это как раз ссылка на твой график
источник

EK

Evgeny Kalibrov in Angular - русскоговорящее сообщество
Sergey
Ну ты же можешь получить через ViewChild - baseChart
Если я правильно понял, это как раз ссылка на твой график
export class HomeComponent { @ViewChild(BaseChartDirective) public chart: BaseChartDirective; // Now you can reference your chart via this.chart void updateChart() { this.chart.chart.update(); // This re-renders the canvas element. }
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Yuri Katkov
вот что тут может пойти не так?
а ты уверен что проблема здесь?
источник

YK

Yuri Katkov in Angular - русскоговорящее сообщество
Smooth Operator
а ты уверен что проблема здесь?
Пока нет, вот буду щас с Xcode отлаживать
источник

S

Sergey in Angular - русскоговорящее сообщество
Evgeny Kalibrov
export class HomeComponent { @ViewChild(BaseChartDirective) public chart: BaseChartDirective; // Now you can reference your chart via this.chart void updateChart() { this.chart.chart.update(); // This re-renders the canvas element. }
Во, идеально)
источник

YK

Yuri Katkov in Angular - русскоговорящее сообщество
демки-то ng-bootstrap dropdown работают нормально
источник

YK

Yuri Katkov in Angular - русскоговорящее сообщество
и воплей не слышно - значит проблема в нашем говнокоде и тем, как ios13.3 обыгрывает его в отличие от ios12.
источник

N

Nazar in Angular - русскоговорящее сообщество
а что принимает  директива ngModel ? начальное значения формы ?
источник

М

Максим in Angular - русскоговорящее сообщество
Evgeny Kalibrov
export class HomeComponent { @ViewChild(BaseChartDirective) public chart: BaseChartDirective; // Now you can reference your chart via this.chart void updateChart() { this.chart.chart.update(); // This re-renders the canvas element. }
Точно, спасибо большое всем
источник

S

Sergey in Angular - русскоговорящее сообщество
Максим
Точно, спасибо большое всем
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Nazar
а что принимает  директива ngModel ? начальное значения формы ?
просто значение контрола
источник

J

Jugger in Angular - русскоговорящее сообщество
ребята такой вопрос, при lazy loading, css стили тоже по модулям грузится или все сразу?
источник