Size: a a a

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

2021 April 04

МБ

Мартин Бах in Angular - русскоговорящее сообщество
Всем привет!

У меня есть такой метод, который обновляет данные.

updateTasks(): void {
 if (this.timeout !== null) {
   clearTimeout(this.timeout);
 }
 this.timeout = setTimeout(() => {
   localStorage.setItem('tasks', JSON.stringify(this.testTasks.value));
 }, 500);
}

Метод вызывается в других методах, чтобы избежать лишнего вызова обернул в setTimeout, но хотелось бы это сделать через rxjs с debounceTime(500). Подскажите как это все устроить?)
источник

Е

Егор in Angular - русскоговорящее сообщество
Допустим, Я хочу пару разных лейаутов для разных страниц. Это ведь надо значит создать два разных лэйаута, внутрь которых уже будут идти компоненты?
источник

СТ

Серёжа Тиховский... in Angular - русскоговорящее сообщество
Егор
А где можно посмотреть все-таки как структурировать проект? Владимир сейчас написал и я понял что я по логике не структуру сделал а кашку манную
источник

В

Владимир in Angular - русскоговорящее сообщество
Егор
А где можно посмотреть все-таки как структурировать проект? Владимир сейчас написал и я понял что я по логике не структуру сделал а кашку манную
посмотри на структуру angular.material - много полезного извлечешь. Смотри на гитхабе репо, изучай там. курсы уроки и тд)) ну или переходи на светлую сторону силы и познакомься с Nx и моими видео)
источник

M

Maksim in Angular - русскоговорящее сообщество
Егор
А где можно посмотреть все-таки как структурировать проект? Владимир сейчас написал и я понял что я по логике не структуру сделал а кашку манную
как ни странно, в документации... Проект который строится в гайде по роутингу - хорошая точка для старта https://angular.io/guide/router
в самом верху есть ссылка на stackblitz на финальный результат чтобы быстро посмотреть что получится
источник

Е

Егор in Angular - русскоговорящее сообщество
Maksim
как ни странно, в документации... Проект который строится в гайде по роутингу - хорошая точка для старта https://angular.io/guide/router
в самом верху есть ссылка на stackblitz на финальный результат чтобы быстро посмотреть что получится
Он у меня есть, сам его сделал
источник

СТ

Серёжа Тиховский... in Angular - русскоговорящее сообщество
Мартин Бах
Всем привет!

У меня есть такой метод, который обновляет данные.

updateTasks(): void {
 if (this.timeout !== null) {
   clearTimeout(this.timeout);
 }
 this.timeout = setTimeout(() => {
   localStorage.setItem('tasks', JSON.stringify(this.testTasks.value));
 }, 500);
}

Метод вызывается в других методах, чтобы избежать лишнего вызова обернул в setTimeout, но хотелось бы это сделать через rxjs с debounceTime(500). Подскажите как это все устроить?)
updateTasks() {
   timer(500).pipe(
       take(1)
   ).subscribe(() => localStorage.setItem('tasks', JSON.stringify(this.testTasks.value)));
}
источник

В

Владимир in Angular - русскоговорящее сообщество
Maksim
как ни странно, в документации... Проект который строится в гайде по роутингу - хорошая точка для старта https://angular.io/guide/router
в самом верху есть ссылка на stackblitz на финальный результат чтобы быстро посмотреть что получится
мне не очень нравится гайдовый пример... по двум причинам - он написан так, что словно рассчитан на уже понимающего логику, что неправильно (но это скорее придирки). Вторая причина - он ооооочень старенький, пару раз адаптирован, но получилось что сам ангулар ушел вперед, а пример в доке отолько перелицевали
источник

СТ

Серёжа Тиховский... in Angular - русскоговорящее сообщество
Серёжа Тиховский
updateTasks() {
   timer(500).pipe(
       take(1)
   ).subscribe(() => localStorage.setItem('tasks', JSON.stringify(this.testTasks.value)));
}
Но вообще мне кажется тут стоит начать с вопроса необходимости такого функционала
источник

M

Maksim in Angular - русскоговорящее сообщество
Егор
Он у меня есть, сам его сделал
откуда тогда каша взялась? В том гайде почти все правильно сделано. Одна страница = 1 модуль. Без Shared/Core модулей.
источник

МБ

Мартин Бах in Angular - русскоговорящее сообщество
Серёжа Тиховский
Но вообще мне кажется тут стоит начать с вопроса необходимости такого функционала
Можно по подробнее?)
источник

Е

Егор in Angular - русскоговорящее сообщество
Maksim
откуда тогда каша взялась? В том гайде почти все правильно сделано. Одна страница = 1 модуль. Без Shared/Core модулей.
Каша началась после прочтения этой статьи https://medium.com/dev-jam/5-tips-best-practices-to-organize-your-angular-project-e900db08702e
источник

МБ

Мартин Бах in Angular - русскоговорящее сообщество
Серёжа Тиховский
updateTasks() {
   timer(500).pipe(
       take(1)
   ).subscribe(() => localStorage.setItem('tasks', JSON.stringify(this.testTasks.value)));
}
Мне кажется или он тут будет вызывать раз столько раз сколько обращений будет?)
источник

СТ

Серёжа Тиховский... in Angular - русскоговорящее сообщество
Мартин Бах
Можно по подробнее?)
В чем необходимость таймаута в 500?
Я как понимаю там вэйтинг результата респонса, почему не сделать сразу по результату, а не по фантомным 500мс?
источник

МБ

Мартин Бах in Angular - русскоговорящее сообщество
Ну и отписываться не надо?)
источник

СТ

Серёжа Тиховский... in Angular - русскоговорящее сообщество
Мартин Бах
Мне кажется или он тут будет вызывать раз столько раз сколько обращений будет?)
А, там в этом подвох)

Тогда да, сейчас поправлю
источник

В

Владимир in Angular - русскоговорящее сообщество
Егор
Допустим, Я хочу пару разных лейаутов для разных страниц. Это ведь надо значит создать два разных лэйаута, внутрь которых уже будут идти компоненты?
есть несколько вариантов реализации. Самый простой - два отдельных лейаута и выбор по *ngIf. Чуть сложнее - один лейаут, но конфигурируемый через опции. Еще сложнее - несколько разных лейаутов, подключаемых через слой layoutPlugin (абстрактная обертка над самими лейаутами)... в общем - по задаче
источник

СТ

Серёжа Тиховский... in Angular - русскоговорящее сообщество
Мартин Бах
Ну и отписываться не надо?)
take(1) сам его завершит после первого эмита
источник

МБ

Мартин Бах in Angular - русскоговорящее сообщество
Серёжа Тиховский
В чем необходимость таймаута в 500?
Я как понимаю там вэйтинг результата респонса, почему не сделать сразу по результату, а не по фантомным 500мс?
Там происходит обновление по interval, для актуализации данных, и там он может сработать одновременно)
источник

M

Maksim in Angular - русскоговорящее сообщество
забудьте советы 1 и 2, и каша пропадет :)
источник