Size: a a a

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

2019 October 22

L

Let me take you into the light in Angular - русскоговорящее сообщество
Yuri Katkov
а вот еще вопрос. Какой правильный способ превращать клики по кнопкам в обсерваблы в ангуляре?
fromEvent ?
источник

YK

Yuri Katkov in Angular - русскоговорящее сообщество
<button (click)="runSimulation()"
>New simulation
</button>

и в ts:
private newSimulationClicks$ = new Subject();
runSimulation() {
 this.newSimulationClicks$.next();
}
источник

YK

Yuri Katkov in Angular - русскоговорящее сообщество
а чо ему туда в параметры пихать, этому фромЭвенту? Через ViewChild мучаться получать доступ?

@ViewChild('searchInput') 
input: ElementRef;

const a$ = fromEvent<any>(this.input.nativeElement, 'keyup')
источник

L

Let me take you into the light in Angular - русскоговорящее сообщество
Yuri Katkov
а чо ему туда в параметры пихать, этому фромЭвенту? Через ViewChild мучаться получать доступ?

@ViewChild('searchInput') 
input: ElementRef;

const a$ = fromEvent<any>(this.input.nativeElement, 'keyup')
Да походу )
источник

L

Let me take you into the light in Angular - русскоговорящее сообщество
По-другому никак
источник

YK

Yuri Katkov in Angular - русскоговорящее сообщество
еще изящнее не выйдет?
источник

YK

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

L

Let me take you into the light in Angular - русскоговорящее сообщество
Yuri Katkov
еще изящнее не выйдет?
Через директиву)
источник

YK

Yuri Katkov in Angular - русскоговорящее сообщество
Let me take you into the light
Через директиву)
а как?
источник

YK

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

L

Let me take you into the light in Angular - русскоговорящее сообщество
Yuri Katkov
а как?
Директива получает уже елмреф
источник

L

Let me take you into the light in Angular - русскоговорящее сообщество
А аутпутит observable
источник

L

Let me take you into the light in Angular - русскоговорящее сообщество
По клику
источник

IS

Igor Shturmov in Angular - русскоговорящее сообщество
Valentin Buryakov
А как придумали? Через роуты чтоб было обязательно, entity1/entity2/... ?
Ну пока что да, я на этапе распределения роутов знаю какие у меня айди и просто через enum подставляю нужное мне значение роута
источник

YK

Yuri Katkov in Angular - русскоговорящее сообщество
Let me take you into the light
По-другому никак
так себе оно выглядит, конечно ,если angular material используется.
matButton:
@ViewChild('newSimulationButton', { static: false, read: ElementRef })
newSimulationButton: ElementRef;
...
const newSimulationClicks$ = fromEvent(this.newSimulationButton.nativeElement, 'click');


а вот matSlideToggle:

@ViewChild('autoModeSlideToggle', { static: false })
autoModeSlideToggle: MatSlideToggle;
...
const autoMode$ = this.autoModeSlideToggle.change;
источник

L

Let me take you into the light in Angular - русскоговорящее сообщество
Yuri Katkov
так себе оно выглядит, конечно ,если angular material используется.
matButton:
@ViewChild('newSimulationButton', { static: false, read: ElementRef })
newSimulationButton: ElementRef;
...
const newSimulationClicks$ = fromEvent(this.newSimulationButton.nativeElement, 'click');


а вот matSlideToggle:

@ViewChild('autoModeSlideToggle', { static: false })
autoModeSlideToggle: MatSlideToggle;
...
const autoMode$ = this.autoModeSlideToggle.change;
Тоже правда
источник

YK

Yuri Katkov in Angular - русскоговорящее сообщество
ребята, в каком случае вы используете ангуляр-сервисы, а в каком - можно обойтись просто висящей где-то в воздухе функцией? Вот например, есть у меня функция, форматирующая список лекарств. Пока что она сидит внутри компонента:
export class DrugsShortComponent implements OnInit {

 @Input()
 drugs: Drug[];

 drugsFormatted: string;

 constructor() {
 }

 ngOnInit() {
   this.drugsFormatted = this.formatDrugs();
 }

 private formatDrugs(): string {
   return this.drugs.length ? this.drugs
     .map(drugFullName => drugFullName.substring(0, 3))
     .join(', ') : 'No drugs given';
 }
}


Мне, понятное дело, хочется ее тестировать удобно, плюс я читал, что вся логика должна быть  в сервисах, а компоненты должны быть тупенькие
1) Надо создать stateless DrugFormattingService с единственной функцией?
2) надо просто сделать ее статической и оставить в классе компонента?
3) надо просто сделать ее свободной функцией и оставить в файле компонента?
источник

AK

Anthony Kiediz in Angular - русскоговорящее сообщество
Yuri Katkov
ребята, в каком случае вы используете ангуляр-сервисы, а в каком - можно обойтись просто висящей где-то в воздухе функцией? Вот например, есть у меня функция, форматирующая список лекарств. Пока что она сидит внутри компонента:
export class DrugsShortComponent implements OnInit {

 @Input()
 drugs: Drug[];

 drugsFormatted: string;

 constructor() {
 }

 ngOnInit() {
   this.drugsFormatted = this.formatDrugs();
 }

 private formatDrugs(): string {
   return this.drugs.length ? this.drugs
     .map(drugFullName => drugFullName.substring(0, 3))
     .join(', ') : 'No drugs given';
 }
}


Мне, понятное дело, хочется ее тестировать удобно, плюс я читал, что вся логика должна быть  в сервисах, а компоненты должны быть тупенькие
1) Надо создать stateless DrugFormattingService с единственной функцией?
2) надо просто сделать ее статической и оставить в классе компонента?
3) надо просто сделать ее свободной функцией и оставить в файле компонента?
Выглядит как статическая в utils классе
источник

YK

Yuri Katkov in Angular - русскоговорящее сообщество
Anthony Kiediz
Выглядит как статическая в utils классе
а вот какой ход рассуждений?
источник

AK

Anthony Kiediz in Angular - русскоговорящее сообщество
Хотя судя по всему в идеале вообще сделать pipe и избавиться от drugsFormatted
источник