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

Страница 32 из 179
Sergey
18.09.2016
15:40:49
Но код у меня генерируется, поэтому писать это сходу не всегда удобно. Добавлять retry там. Да, наследование тут удобно.

Алексей
18.09.2016
16:14:21
Ага, зато ты 100% нарушаешь single responsibility раз уж мы тут про принципы и паттерны начали. Пример - oauth или что угодно другое где есть токены и время жизни. Каждый запрос потенциально может быть выполнен с протухшим токеном и нужно это глобально обрабатывать, делать на лету refresh token вызов и повторить исходный запрос который изначально не прошёл. В случае неудачного refresh token мы должны отредиректить пользователя на форму логина показать алерт какой нибудь и тд. Вопрос, с какой стати http сервис должен что-то об этом знать? Это не его ответственность работать с oauth , кого-то редиректить и вызывать алерты. Http должен делать только http запросы в рамках протокола
Single Responsiblity - это не означает что 1 класс должен делать 1 действие - Single Reposibility - это "one reason to change" у всего должна быть 1 причина для изменения. Изменился способ общения с HTTP - изменил класс. Все логично и просто. Ты на MoscowJS 24-го пойдешь? http://moscowjs.ru/talk/solidniy-javascript

Alexey
18.09.2016
16:29:30
Нет, я не хожу на фронтовые конфы. Но посмотрю запись твоего доклада)

Алексей
18.09.2016
16:30:31
Жаль - похоливарили бы :) (ну если что можно будет на Angular митапе втретиться)

Google
Alexey
18.09.2016
16:31:36
Насчёт ангуляр митапа подумаю, такие ивенты - редкость

Vitaliy
18.09.2016
17:13:09
Ребят, новых буков the complete guide of ng2 не выходило? У меня r35 последняя.

Михаил
18.09.2016
18:04:49
ребят, а формы все делают через формбилдеры? читаю https://scotch.io/tutorials/using-angular-2s-model-driven-forms-with-formgroup-and-formcontrol Что-то как-то сложно

Alexey
18.09.2016
18:12:47
я не делаю

использую только template forms

тут был холивар на эту тему как-то

Михаил
18.09.2016
18:13:33
И к чему пришли?

и что такое темплейт формс?

Alexey
18.09.2016
18:13:46
как обычно все при своем мнении остались

Михаил
18.09.2016
18:14:35
просто у меня ругается, когда я просто делаю через [ngModel] + нету биндинга,

[(ngModel)]*

Alexey
18.09.2016
18:15:15
template forms это когда вся форма строится в шаблоне на директивах

на что ругается?

Google
Михаил
18.09.2016
18:15:50
ох, я уже закрыл проект. Сек)

Alexey
18.09.2016
18:16:38
name="" атрибут не забыл у всех [(ngModel)] определить?

Михаил
18.09.2016
18:17:38
он обязателен?

Alexey
18.09.2016
18:17:46
да

Михаил
18.09.2016
18:17:53
у меня просто

Alexey
18.09.2016
18:17:57
если внутри <form> у тебя элементы

Михаил
18.09.2016
18:18:04
[(ngModel)]="model.name"

Alexey
18.09.2016
18:18:04
то обязателен name

Михаил
18.09.2016
18:18:08
в первом взлетало вроде

Alexey
18.09.2016
18:18:16
это не первый)

Михаил
18.09.2016
18:18:53
сейчас гляну

Alexey
18.09.2016
18:19:01
там же в консоли сразу ругается ангуляр если name не проставить

Михаил
18.09.2016
18:19:29
может я недошел до этих эроров)

я ngModel в компоненте определяю как объект класса

еще

newCustomer: Customer;

я видел они описывали в доке типо this.newCustomer = new Customer('','');

Alexey
18.09.2016
18:21:37
если честно то ничего не понял, почитай лучше внимательно в консоли на что руагается

Михаил
18.09.2016
18:21:48
та я стягиваю модули)

сейчас чекну

Google
Alexey
18.09.2016
18:21:56
скинь сюда ошибку если не понятно

Михаил
18.09.2016
18:26:16
ругается на модель

Cannot read property 'name' of undefined

newCustomer: Customer; больше я нигде не объявляю кастомера

Alexey
18.09.2016
18:41:05
ты newCustomer куда-то в шаблоне прокидываешь в проперти дочерних компонентов?

[(ngModel)]="newCustomer.name" или {{newCustomer.name}} есть где нибудь?

[(ngModel)]="model.name" тут model это newCustomer ?

Михаил
18.09.2016
18:43:32
Да

Alexey
18.09.2016
18:43:44
тогда newCustomer: Customer; поменяй на newCustomer = new Customer();

у тебя newCustomer при первом рендеринге = undefined сейчас

в первом ангуляре шаблоны и их expression молчали и не кидали исключений

в ng2 такое не пройдет

Михаил
18.09.2016
18:45:13
Спасибо

работает

Alexey
18.09.2016
18:45:20
в ng2 шаблоны можно рассматривать как jsx в реакте

это такой же runtime код

на JS

Михаил
18.09.2016
18:45:51
я думал, что newTest:test - эквивалентно созданию новой переменной в скоупе

Dreamerinnoise
18.09.2016
18:46:16
это такой же runtime код
есть что почитать про это подробнее?

Alexey
18.09.2016
18:46:31
доку на angular.io )

Google
Alexey
18.09.2016
18:46:55
я думал, что newTest:test - эквивалентно созданию новой переменной в скоупе
это объявление переменной, в скомпилированном виде это var newTest;

соответсвтенно newTest == undefined

без явного присваивания значения все объявляется как undefined

Михаил
18.09.2016
18:49:56
Понял, спасибо

Alexey
19.09.2016
07:59:11
тут недавно обсуждали lazy loading строенный в роутер

я сделал демку

import { ModuleWithProviders } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; export const routes: Routes = [ { path: '', redirectTo: 'crisis', pathMatch: 'full'}, { path: 'crisis', loadChildren: 'app/crisis/crisis.module#CrisisModule' }, { path: 'heroes', loadChildren: 'app/heroes/heroes.module#HeroesModule' } ]; export const routing: ModuleWithProviders = RouterModule.forRoot(routes);

Dreamerinnoise
19.09.2016
08:00:12
доку на angular.io )
честно, пытался найти механизм, но не вкурил как его можно рассматривать как jsx в реакте. Если есть ошибка в темплейте, то он не соберётся, верно?

Alexey
19.09.2016
08:01:26
CrisisModule и HeroesModule импортируют shared модуль ChartModule внутри которого импортируется Highcharts

в итоге вебпак собирает 2 чанка и в оба подключает Highcharts

хотя в доке пишут что вебкап умный и может в отдельный чанк выносить шаред модули

https://webpack.github.io/docs/code-splitting.html#commons-chunk

честно, пытался найти механизм, но не вкурил как его можно рассматривать как jsx в реакте. Если есть ошибка в темплейте, то он не соберётся, верно?
нет, возможно я примером с jsx ввел тебя в заблуждение, при компиляции ангуляровские шаблоны не проверяются, это просто строки

я имел в виду рантайм

все рантайм исключения из шаблонов будут всплывать

в отличие от ng1 где они были обернуты в try-catch

Dreamerinnoise
19.09.2016
08:05:18
ok, понял. я уж подумал, там прям как в jsx

Alexey
19.09.2016
08:05:55
к сожалению нет( я бы хотел типизацию в шаблоны и compile time проверку

насчет lazy loading кто в теме поделитесь как правильно выносить shared модули

Vadym
19.09.2016
10:00:01
Мужики, привет, как сделать редирект непрописанных в роутере ссылок?

Google
Vadym
19.09.2016
10:04:35
только так { path: '**', redirectTo: '/home } ?

Sergey
19.09.2016
10:13:26
насчет lazy loading кто в теме поделитесь как правильно выносить shared модули
Я все вынес по доке, но роуты не заработали, поэтому просто врнул вставку роутов в app.route.ts

Хотя, что-то у меня подключалось, но я считаю router еще очень сырой, особенно с children очень странно работает

Alexey
19.09.2016
10:45:53
по доке это импортить все шаред модули в AppModule?

или собрать в CoreModule и так же подключить в AppModule

так?

такой вариант мне тоже не нравится потому что все shared модули свалятся в main.bundle.js впридачу к ангуляру и его зависимостям, бандл будет большой все равно

мне бы хотелось CoreModule собрать в отдельный чанк и подгружать его on demand

Алексей
19.09.2016
10:56:50
только так { path: '**', redirectTo: '/home } ?
не прописанных помоему только так, а что не так с этим подходом?

Vadym
19.09.2016
11:02:48
если ссылка такого вида http://localhost:3000/blabla то все ок, а если http://localhost:3000/blabla/blabla то уже ошибка

Sergey
19.09.2016
11:07:30
или собрать в CoreModule и так же подключить в AppModule
Штука в том, что грузится будут только те, что указаны в роутере как loadChildren: И обычно удается вынести независимые части. У меня от Core зависит все, например.

Alexey
19.09.2016
11:11:59
Я понимаю как это работает и багов кстати я пока не словил. У меня кейс с highcharts , он тяжелый и используется не везде, примерно в половине роутов. Я не хочу чтобы он был в main бандле, хочу сделать отдельный чанк для него, и дождаться когда пользователь откроет тот роут где он используется

И это loadChildren соглашение не покрывает этот кейс

Попробую сейчас сделать фейковый роут специально для Highcharts

Чтобы под него чанк отдельный выделили

Алексей
19.09.2016
11:14:12
если ссылка такого вида http://localhost:3000/blabla то все ок, а если http://localhost:3000/blabla/blabla то уже ошибка
Вечером посмотрю - а пока самое простое это продублировать компонет ( правда редиректа не будет ) { path: '**', component: MissingPageComponent } но если честно такое поведение более правильное - если ты в сайте попадаешь на неизвестный роут тебе показывают 404 и предлагают перейти кудато - никаких автоматических редиректов, это может сыграть злую шутку

Vadym
19.09.2016
11:15:42
Алексей, спасибо

Sergey
19.09.2016
11:19:53
Alexey
19.09.2016
11:19:58
Да

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

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