@angular2Эта группа больше не существует

Страница 131 из 179
Valery
13.01.2017
14:08:01
мм, я сейчас начинаю немного вникать в RxJS. Если ngrx это не то же самое, то поправьте плиз
Если я правильно помню, то ngrx - это "имплементация" redux для angular2. Ngrx активно использует rxjs

Gleb
13.01.2017
14:10:07
@Ai_boy Добрый вечер, хотел спросить DCI как то уместно сравнивать с MVVM в .NET? то есть component - View, DCI - ViewModel

Yuriy
13.01.2017
14:12:52
Можно в ngClass юзать динамические классы? хочу типа такого <span [ngClass]="{ [collapseIconClass]: isOpen, [expandIconClass]: !isOpen }" aria-hidden="true"></span> но ангуляр не хавает вычисляемые ключи

Google
Yuriy
13.01.2017
14:48:43
mr
13.01.2017
14:50:10
та не, оно ж как строку воспринимать будет
Да я уже понял что ты имел в виду computed propertyes

Алексей
13.01.2017
15:27:39
@Ai_boy Добрый вечер, хотел спросить DCI как то уместно сравнивать с MVVM в .NET? то есть component - View, DCI - ViewModel
Нет конечно нет. Постараюсь сегодня отписаться подробнее. Но если в кратце деление на части в MVVM происходит per view. В DCI per usecase. К примеру в DCI может быть контекст который состоит из множества view и routes

Gleb
13.01.2017
15:30:07
множества view, да кажется я точно не так понял

Алексей
13.01.2017
15:41:14
Не вы можете DCI с одним View делать но точка разрыва (то как делиться DCI на отдельные сущности) она реже привязанна к view и больше к UseCase. (К примеру не форма нанятия работника а процесс нанятия работника)

Gleb
13.01.2017
16:08:59
то есть я потом сам процесс как то переиспользовать могу?

Yuriy
13.01.2017
16:24:22
сорри за нубский вопрос. как я могу получить дочерние компоненты? <cb-accordion [closeOthers]="false" [startOpen]="true"> <cb-accordion-item [heading]="'Title as attribute'"> Accordion group 1 contents. </cb-accordion-item> </cb-accordion> После инита главного компонента хочу пройтись по дочерним и установить некоторые опции.

всё, словил в AfterViewIinit )

Алексей
13.01.2017
16:41:14
то есть я потом сам процесс как то переиспользовать могу?
Да в это и вся соль. С DCI ты ориентируешься на "процессы" в бизнес логике а не на "участиников"

Gleb
13.01.2017
16:45:20
и из него уже вызов сервисов, dispatch в стор? а в плане тестирования я его тестирую только на предмет того что я принял от компонента и передал дальше?

Интересная штука, странно что не трендовая, по ней не так много инфы

Dmitry
13.01.2017
16:57:21
подключил primeng tree, говорит что мой компонент footer не один типа так нельзя, переименовываю в myFooter, говорит myFooter не один, отключаю primeng TreeModule все ок, самый прикол в том что у меня футер сайдменю и лефт меню написаны буква в букву, но при подключении модуля происходит какой то эпичный пиздец

Google
Dmitry
13.01.2017
16:57:26
ни кто не сталкивался?

@tairs @davidmart

Igor
13.01.2017
18:09:58
А в связке с ngrx кто то работает?
я начал работать, взял в новый проект ngrx, не знаю что из этого выйдет, тесты пока не писал. Пока что проект сполшной каркас с парой прототипов, ngrx используется в одном месте пока, для модуля чата. Пока что двоякие ощущения от него

Alexey
13.01.2017
18:35:18
Я тоже заюзал недавно ngrx, тесты тоже пока не писал но очевидно что Effect это обычные injectable сервисы которые легко в тестах замокать, вместо вызовов API в моке можно легко вернуть просто Observable.of(fakeData)

Или вообще эффект заменить на пустой класс т.е отключить все эффекты и в тестах где надо вызывать store.dispatch() с тестовыми данными

Ui компоненты не должны знать откуда данные в стор приходят им все равно

А можно не мокать даже effect а просто не импортировать его в testbed модуль

И проблем вообще не будет

Дергай экшны с фейковыми данными и тести ui

На сами Effect сервисы тесты написать тоже легко, можно замокать сервисы а можно замокать сеть через fakeBackend

Для тестов редьюсеров вообще голого jasmine достаточно, это чистая функция

Gleb
13.01.2017
18:45:29
Спасибо за ответы! и еще хотел вот компонент вызывающий dispatch скажем по клику или там по вводу в инпут будет тестироваться просто spy на вызов dispatch в каком нибудь фейкСервисе любом с нужным экшн?

и все это будет считаться протестированый кейс

верно?

it('should highlight call', fakeAsync(() => { const hds = fixture.debugElement.injector.get(ngrx.Store); const saveSpy = spyOn(hds, 'dispatch'); rootEl.nativeElement.dispatchEvent(newEvent('mouseenter')); expect(saveSpy.calls.count()).toBe(1); })); скажем вот сюда добавить еще проверку на то что вызывается именно нужный экшн и кейс того что по mouseenter вызывается highlight покрыт, так ведь?

Далее я уже покрою просто сам редюсер и эффект

Alexey
13.01.2017
18:55:56
Да, это норм вариант.

Redux полностью отделяет ui от бизнес логики, ответственность компонента заканчивается на вызове dispatch

Только если в этом компоненте у тебя есть store.subscribe() то надо протестить все кейсы которые могут прийти из стора, все что влияет на компонент

Google
Alexey
13.01.2017
19:03:35
Т.е самому в тестах подергать экшны которые инициируют разное состояние для этого компонента, тот же highlight, проверить что ui отрисуется с подсветкой если в сторе есть такой флаг

Gleb
14.01.2017
06:53:10
Кароче натестировался ngrx вдоволь , все очень коротко в плане ui и еще короче в редусерах

до effects не дошел, подзабил, там тока хттп

Где то видел ООП подход к организации с ngrx, если у кого по близости в закладках скиньте плиз

Alexey
14.01.2017
07:24:08
Наверно в докладе @Ai_boy SOLID в JS

Vladimir
14.01.2017
07:25:50
Там просто про redux было

Таир
14.01.2017
11:07:04
у кого нить вылетала ошибка, что не получается выявить entryModule при ng serve?

Алексей
14.01.2017
11:10:08
у кого нить вылетала ошибка, что не получается выявить entryModule при ng serve?
https://github.com/angular/angular-cli/issues/2887 В основном вылетает если играешься с bootstrapModule(AppModule) (как-то меняешь код)

Таир
14.01.2017
11:10:14
с ng-cli beta.25 это решилось по идее, но мне лично не нравится, что cli ищет входной модуль строго через стат.анализ

let bootstrap = () => platformBrowserDynamic().bootstrapModule(AppModule, { providers }).catch((reason) => { console.error(reason); });

..promise.then(bootstrap)

раньше с этим билд не срабатывал

но потом кто-то предложил костыль if (window != window) { platformBrowserDynamic().bootstrapModule(AppModule); }

с beta.25 этот костыль начал мешать

я его убрал, все заработало

Алексей
14.01.2017
11:13:02
Se la vi. Если что есть алтернативы Angular CLI https://github.com/AngularClass/angular2-webpack-starter Ну и вообще beta она и в африке бета :)

Таир
14.01.2017
11:13:25
я вообще к чему спрашиваю

я сделал патч на ng-cli, который позволяет однозначно решить эту проблему

Google
Таир
14.01.2017
11:15:04
который позволяет гвоздями прибить entryModule в angular-cli.json

думал, если есть, кто еще от этого пострадал с ng-cli, довести его до ума и послать PR

Алексей
14.01.2017
11:17:18
думал, если есть, кто еще от этого пострадал с ng-cli, довести его до ума и послать PR
Делай. Обязательно поддержу (сам не страдал но люди есть)

Таир
14.01.2017
11:17:35
ок

спасибо!

поздравляю @perminovx, вы по ходу юбилейный участник чата :)

Vitaly
14.01.2017
11:32:48
))))

Таир
14.01.2017
11:32:55
шестисотый

Timur
14.01.2017
11:33:08
Давайте выдадим приз!

Призовой бан! ? ?

sanqa
14.01.2017
16:40:12
Hi, пацаны есть у кого на гите готовое ToDo с роутами ?поделитесь ссылкой pls

роуты типо /users, /user/:id, /user/:id/edit

Буду благодарен

Andrey
14.01.2017
17:02:55
в доке роутера всё подробно расписано с готовыми примерами.

Таир
14.01.2017
21:03:51
https://github.com/angular/angular-cli/pull/4013

если у кого-то есть проблемы со стат.анализом кода, голосуйте за этот PR

Делай. Обязательно поддержу (сам не страдал но люди есть)
покопал еще: оказывается в tsconfig.json можно указать angularCompilerOptions.entryModule, но он почему-то не учитывался. поправил

Vlad
15.01.2017
15:58:39
Angular material использует кто ?

Константин
15.01.2017
16:02:36
не.

Мне кажется он лишним. И трудно объяснить дизайнеру ,что у нас новая парадигма и т.п.

Страница 131 из 179

Эта группа больше не существует Эта группа больше не существует