Size: a a a

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

2019 September 23

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
да, эту статью читал)
источник

E

Eugene in Angular - русскоговорящее сообщество
Leonard Tkachev
обычно в конце
ngOnDestroy() {
   if (this.sub1) { this.sub1.unsubscribe(); }
   if (this.sub2) { this.sub2.unsubscribe(); }
   if (this.sub3) { this.sub3.unsubscribe(); }
 }
не хотите попробовать воспользоваться готовым решением? ngx-take-until-destoy или что-то подобное.
источник

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
Eugene
не хотите попробовать воспользоваться готовым решением? ngx-take-until-destoy или что-то подобное.
готовое решение не очень хочется, половина приложения написана уже. это порядка 500 компонентов, везде все менять не очень)
источник

E

Eugene in Angular - русскоговорящее сообщество
Eugene
не хотите попробовать воспользоваться готовым решением? ngx-take-until-destoy или что-то подобное.
его будет проще всего отрефакторить на observable-хуки, после того как ivy релизнется
источник

DD

Daniil Dubrava in Angular - русскоговорящее сообщество
Leonard Tkachev
да, эту статью читал)
источник

BO

Bayyr Oorjak in Angular - русскоговорящее сообщество
Leonard Tkachev
не совсем понятно куда merge вставлять
есть this.allItems, который заполняется при ngOnInit, он же выводится в шаблоне(<ng-container *ngFor="let i of this.allItems">).

в ngOnInit {this.getInfo(id)}

getInfo(id:number){
   this.sub1 = this.journalService.getJournalClientItems(id)
     .subscribe((allItems: any) => {
       this.allItems = allItems;

       this.allItems.forEach(item => item['j_name']= this.getClientName(item.j_obj_id));
       console.log(this.getClientName(264));
       console.log(this.allItems);
     });

getClientName(id: number) {
   this.sub2 = this.clientsService.getClientById(id)
     .subscribe((client: any) => {
       this.client = client;
       return this.client.first_name
     });
 }
this.allItems$ = this.journalService.getJournalClientItems(id)
 .pipe(
   tap(items => {
     items.forEach(item => item['j_name'] = this.getClientName(item.j_obj_id))
   }),
   shareReplay(1),
 );

this.data$ = this.allItems$
 .pipe(
   switchMap(items => merge(...items.map(item => this.service.getById(item.worker_id)))),
 );

<div *ngFor="let item of allItems$ | async"></div>
<div *ngFor="let dataItem of data$ | async"></div>
источник

А

Андрей in Angular - русскоговорящее сообщество
Eugene
Если хотите собирать на сервере или у вас есть серверный рендеринг - любая vps, вам нужны ток nginx/node. Если будете доставлять до сервера уже собранный билд - что угодно, в чем есть nginx.
Я ничего не понял)) я ж говорю что нуб
источник

А

Андрей in Angular - русскоговорящее сообщество
Daniil Dubrava
Просто для теста surge юзай
Почитаю
источник

DD

Daniil Dubrava in Angular - русскоговорящее сообщество
Андрей
Почитаю
источник

BO

Bayyr Oorjak in Angular - русскоговорящее сообщество
Андрей
Я ничего не понял)) я ж говорю что нуб
у вас просто должен быть веб-сервер типа nginx'a, который будет на запросы отдавать сбилдженный index.html
источник

С

Сергей in Angular - русскоговорящее сообщество
Подскажите идею для приложения ?
хотел сделать task scheduler с самописным календарём
но сделать свой полноценный календарь у меня хватает мозгов, а брать готовый типа этого лишено смысла
ибо это уже 65% всего приложения.
источник

DD

Daniil Dubrava in Angular - русскоговорящее сообщество
Сергей
Подскажите идею для приложения ?
хотел сделать task scheduler с самописным календарём
но сделать свой полноценный календарь у меня хватает мозгов, а брать готовый типа этого лишено смысла
ибо это уже 65% всего приложения.
Для портфолио?
источник

С

Сергей in Angular - русскоговорящее сообщество
Daniil Dubrava
Для портфолио?
ага. если конечно портфолио вообще кто-то смотрит
Я вообще не знаю как первую работу искать )
источник

DD

Daniil Dubrava in Angular - русскоговорящее сообщество
Сергей
ага. если конечно портфолио вообще кто-то смотрит
Я вообще не знаю как первую работу искать )
На любом апи пиши что-нибудь. Хоть мини клиент твиттера. Что в голову придет
источник

DD

Daniil Dubrava in Angular - русскоговорящее сообщество
Сергей
ага. если конечно портфолио вообще кто-то смотрит
Я вообще не знаю как первую работу искать )
Можешь пробовать писать всем, мож тестовое дадут)
источник

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
Bayyr Oorjak
this.allItems$ = this.journalService.getJournalClientItems(id)
 .pipe(
   tap(items => {
     items.forEach(item => item['j_name'] = this.getClientName(item.j_obj_id))
   }),
   shareReplay(1),
 );

this.data$ = this.allItems$
 .pipe(
   switchMap(items => merge(...items.map(item => this.service.getById(item.worker_id)))),
 );

<div *ngFor="let item of allItems$ | async"></div>
<div *ngFor="let dataItem of data$ | async"></div>
большинство ошибок убрал, однако некоторые остались:
error TS2339: Property 'forEach' does not exist on type 'Journal'
error TS2684: The 'this' context of type 'void' is not assignable to method's 'this' of type 'Observable<{}>'

Property 'service' does not exist on type 'ClientHistoryComponent'
там какой сервис имелся ввиду?
источник

BO

Bayyr Oorjak in Angular - русскоговорящее сообщество
Leonard Tkachev
большинство ошибок убрал, однако некоторые остались:
error TS2339: Property 'forEach' does not exist on type 'Journal'
error TS2684: The 'this' context of type 'void' is not assignable to method's 'this' of type 'Observable<{}>'

Property 'service' does not exist on type 'ClientHistoryComponent'
там какой сервис имелся ввиду?
ваш сервис для получения инфы о воркере по его worker_id
источник

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
Bayyr Oorjak
ваш сервис для получения инфы о воркере по его worker_id
переменные правильно же обьявил?
 allItems$: Observable<Journal[]>;
 data$: Observable<Journal[]>;
источник

BO

Bayyr Oorjak in Angular - русскоговорящее сообщество
Leonard Tkachev
переменные правильно же обьявил?
 allItems$: Observable<Journal[]>;
 data$: Observable<Journal[]>;
вот так, если я правильно понял
this.allItems$ = this.journalService.getJournalClientItems(id)
 .pipe(
   switchMap(items => merge(...items.map(item => this.clientsService.getCLientById(item.worker_id)
     .pipe(
       tap(client => item['j_name'] = client.first_name),
       mapTo(item),
     )
   )))
 );
источник

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
Bayyr Oorjak
вот так, если я правильно понял
this.allItems$ = this.journalService.getJournalClientItems(id)
 .pipe(
   switchMap(items => merge(...items.map(item => this.clientsService.getCLientById(item.worker_id)
     .pipe(
       tap(client => item['j_name'] = client.first_name),
       mapTo(item),
     )
   )))
 );
почему-то ругается на контекст this
  The 'this' context of type 'void' is not assignable to method's 'this' of type 'Observable<{}>'
источник