Size: a a a

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

2020 April 29

L

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

P

Pavel in Angular - русскоговорящее сообщество
K0Tik82
Переслано от
Кто-нибудь пользовался CKEditor?
Есть классный редактор trumbowyg
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
Pavel
Есть классный редактор trumbowyg
жквери только тащит
источник

VB

Valentin Buryakov in Angular - русскоговорящее сообщество
Yurii Zadorozhnyi
Всем привет :)
Нужна помощь с юнит тестингом директиви FormGroupDirective
Примерная реализация здесь
https://medium.com/@amcdnl/reactive-angular-forms-with-ngrx-533a2f28c127

Я пробую тестить внутри тестового компонента:

@Component({
   selector: "test-component",
   template:
       `
       <form [formGroup]="form" formConnect>
       </form>
       `
})
class TestComponent {
   form: FormGroup;

   constructor(
       private formBuilder: FormBuilder
   ) {
       this.initializeLdapConfigurationForm();
   }

   private form(): void {
       this.form = this.formBuilder.group({
           name: ["", [Validators.required, Validators.maxLength(NAME_MAX_LENGTH)]],
           ...
       });
   }
}

   beforeEach(() => {
       TestBed.configureTestingModule({
           declarations: [
               FormConnectDirective,
               TestComponent
           ],
           providers: [
               FormBuilder,
               FormGroupDirective
           ],
       }).compileComponents();

       fixture = TestBed.createComponent(TestComponent);
       fixture.detectChanges();
   });

но похоже внутри тестової директиви нет доступа к форме ...
Cannot read property 'patchValue' of null thrown

Есть ли у кого-то опыт с тестированием такой директивы?
Смотри, судя по всему, когда ты создаешь test-component но к этому моменту форма не создалась, и поэтому тест валить в beforeEach. Плюс может ещё не хватать зависимостей, её же стор ещё нужен.
И кстати почему б не взять уже готовое решение для работой с формами, зачем их вообще в сторе хранить
https://github.com/ngneat/forms-manager
И вот от этого же авторе либа для тестирования, которая облегчает тестрование дериктив и тд, и там с примерами уже есть
https://github.com/ngneat/spectator
источник

G

Galeups in Angular - русскоговорящее сообщество
Veaceslav Artiom
Всем привет, ребят тыкните плиз в меня ссылкой на хорошие best practice для структуры проектов.
И в меня))
источник

G

Galeups in Angular - русскоговорящее сообщество
Veaceslav Artiom
Всем привет, ребят тыкните плиз в меня ссылкой на хорошие best practice для структуры проектов.
Мне вот эта статья очень понравилась

https://dev-gang.ru/article/angular-arhitekturnye-patterny-i-luczshie-praktiki-dwlz213zt5/
dev-gang.ru
Angular: архитектурные паттерны и лучшие практики 
Создание масштабируемого программного обеспечения является сложной задачей. Когда мы думаем о масштабируемости в интерфейсных приложениях, мы можем думать о возрастающей сложности, все большем количестве бизнес-правил, растущем объеме данных, загружаемых в приложение, и больших группах, часто распространяемых по всему миру. Чтобы справиться с упомянутыми факторами для поддержания высокого качества доставки и предотвращения технического долга, необходима надежная и обоснованная архитектура. Сам по себе Angular - довольно самоуверенный фреймворк, заставляющий разработчиков делать все правильно. Тем не менее, есть много мест, где все может пойти не тем путем. В этой статье я представлю рекомендации высокого уровня по хорошо спроектированной архитектуре приложений Angular, основанной на передовых практиках и проверенных на практике шаблонах. Наша конечная цель в этой статье - научиться проектировать приложения Angular, чтобы поддерживать устойчивую скорость разработки и простоту добавления новых функций в долгосрочной…
источник

G

Galeups in Angular - русскоговорящее сообщество
Никогда не создавал доп слой абстракции для логики между компонентом и сервисом, сейчас задумываюсь об этом
источник

G

Galeups in Angular - русскоговорящее сообщество
Но страшно запутаться со временем в проекте)))
источник

В

Виталий in Angular - русскоговорящее сообщество
Привет.

Сделал какстомный пайп, и заметил такую вещь - инстанс этого пайпа создаётся при каждом использовании.
Т.е. например есть у меня ngFor на 10 айтемов - пайп будет создан 10 раз.

Как этого избежать? Как сделать так чтоб пайп создавался только один раз?
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
Виталий
Привет.

Сделал какстомный пайп, и заметил такую вещь - инстанс этого пайпа создаётся при каждом использовании.
Т.е. например есть у меня ngFor на 10 айтемов - пайп будет создан 10 раз.

Как этого избежать? Как сделать так чтоб пайп создавался только один раз?
зачем?
источник

L

Let me take you into... in Angular - русскоговорящее сообщество
Виталий
Привет.

Сделал какстомный пайп, и заметил такую вещь - инстанс этого пайпа создаётся при каждом использовании.
Т.е. например есть у меня ngFor на 10 айтемов - пайп будет создан 10 раз.

Как этого избежать? Как сделать так чтоб пайп создавался только один раз?
Пайп на что повешан ?
источник

В

Виталий in Angular - русскоговорящее сообщество
Anton Shvets
зачем?
Как минимум - затем что нет необходимости создавать новый инстанс каждый раз т.к. можно использовать только один инстанс везде.
Как максимум - у меня пайп использует сервис и подписывается на получение данных, в результате происходит миллион ненужных подписок.
источник

В

Виталий in Angular - русскоговорящее сообщество
Let me take you into the light
Пайп на что повешан ?
В смысле? В шаблоне на переменную. На что его ещё можно повесить?
источник

L

Let me take you into... in Angular - русскоговорящее сообщество
Виталий
Как минимум - затем что нет необходимости создавать новый инстанс каждый раз т.к. можно использовать только один инстанс везде.
Как максимум - у меня пайп использует сервис и подписывается на получение данных, в результате происходит миллион ненужных подписок.
То что твой пайп инжектит сервис с подпиской уже вопрос
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
Let me take you into the light
То что твой пайп инжектит сервис с подпиской уже вопрос
нормально, если к месту использовать
источник

L

Let me take you into... in Angular - русскоговорящее сообщество
Виталий
В смысле? В шаблоне на переменную. На что его ещё можно повесить?
Пайп можно рядом с ngFor повешать и передать весь масив
источник

L

Let me take you into... in Angular - русскоговорящее сообщество
Anton Shvets
нормально, если к месту использовать
Можно это заменить, передав туда уже готовый обсервабл
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
А если куча пайпов, то стоит просто отказаться от пайпа, перенести обработку данных во входной поток
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
Let me take you into the light
Можно это заменить, передав туда уже готовый обсервабл
я иногда делаю пайпы, которые принимают обсервабл и отдают обсервабл.
источник

L

Let me take you into... in Angular - русскоговорящее сообщество
Anton Shvets
я иногда делаю пайпы, которые принимают обсервабл и отдают обсервабл.
Да, но не инжектить туда сервис)
источник