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

Страница 161 из 179
Lends
30.01.2017
12:53:28
<button md-button color="accent">Click me!</button>

работает же ж

https://plnkr.co/edit/Uc2CgMk9hI24OPn1R3RP?p=preview

Vitaliy
30.01.2017
13:29:02
точно спасибо

Google
Vladimir
30.01.2017
14:24:18
А если страничку прокрутить?

Bogdan
30.01.2017
14:26:00
кто нибудь юзал либу angular 2 jwt?
Свою писал, но из указанной некоторые кусочки дергал (например, распаковка из base64)

Gleb
30.01.2017
14:33:09
Привет, если мне в Effect (ngrx) нужен айтем из store, могу ли я обратиться к нему прямо как к value из эффекта? или предполагается что сам effect руками не может лезть в store?

Mikhail
30.01.2017
14:39:35
Привет, если мне в Effect (ngrx) нужен айтем из store, могу ли я обратиться к нему прямо как к value из эффекта? или предполагается что сам effect руками не может лезть в store?
Не пробовал, но судя по https://github.com/ngrx/effects/blob/master/docs/api.md точно можно как-то получить store ;) В обычном redux прям прокидвается store, у которого ты вызываешь store.getState()

Gleb
30.01.2017
14:41:28
Ну то есть еще раз, на каком этапе при отправке экшн в обычном redux мы можем добавить какие то данные в экшн? чисто идеологически интересно

например я сабмитю форму и мне нужно добавить из стора в экшн еще данных

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

Mikhail
30.01.2017
14:42:56
в обычном redux ты возвращаешь функцию, в которую вторым параметро (вроде вторым) попадает store поэтому ты вызываешь store.getState() - берешь данные - и возвращаешь action

Gleb
30.01.2017
14:43:48
Все догнал тогда) то есть там прям в экшн напрямую мы передаем?

стор

Mikhail
30.01.2017
14:43:58
да

Gleb
30.01.2017
14:44:02
а тут то есть я тогда не парясь беру в effect

Google
Gleb
30.01.2017
14:44:07
понял , спасибо!)

Mikhail
30.01.2017
14:44:09
ну и из него методом достаем данные

? пожалуйста)

Все догнал тогда) то есть там прям в экшн напрямую мы передаем?
function incrementIfOdd() { return (dispatch, getState) => { const { counter } = getState(); if (counter % 2 === 0) { return; } dispatch(increment()); }; } Я такой либой пользовался https://github.com/gaearon/redux-thunk

Igor
30.01.2017
14:47:39
Привет, если мне в Effect (ngrx) нужен айтем из store, могу ли я обратиться к нему прямо как к value из эффекта? или предполагается что сам effect руками не может лезть в store?
Вот так можешь делать: @Effect() update$: Observable<Action> = this.actions$ .ofType(SettingsProfileActions.UPDATE_PROFILE) .map((action: CompleteUpdateProfileAction) => action.payload) .withLatestFrom(this.store.select(getCurrentProfile), (data, profile) => { return <Profile>{ ...data, id: profile.id } }) .switchMap(profile => { return this.profilesService.updateBasic(profile) ...... т.е. с помощью withLatestFrom цепляешь из стора любое значение, и примешиваешь к своим данным

бля кривенько вставилось



Gleb
30.01.2017
14:48:28
СУПЕР!

@igor_na Вам тоже спасибо!

Igor
30.01.2017
14:48:35
я патчу данные кусками, поэтому патч может не содержать id текущей модели, я беру его из стора

нз

Gleb
30.01.2017
14:48:55
withLatest

отлично вообще!

Mikhail
30.01.2017
14:49:43
крут ? А как достать 2 и более значения? Я просто совсем новичок в ang

Igor
30.01.2017
14:50:01
через запятую

.withLatestFrom(observer1, observer2, (value1, value2, yourValue)

Mikhail
30.01.2017
14:51:02
ок, прикольна. +10 к годам жизни

Igor
30.01.2017
14:51:03


лучше ко сну :D

Gleb
30.01.2017
14:57:19
ГУД!!)

Google
Gleb
30.01.2017
15:05:34
А хотел спросить, тут наверное больше по синтаксису, у тебя data в данном случае - Array?

А то у меня чуть по-другому получилось .withLatestFrom(this.store.select(fromRoot.getOrganization), (data, organization) => { return Object.assign({}, data, organization.id) }) Я так понимаю ... это конкат ведь?

Mikhail
30.01.2017
15:07:57
Теперь и моя очередь задать вопрос) npm run такой команды gulp && NODE_ENV=production webpack && NODE_ENV=production webpack --config ./webpack.config.aot.js вылетает через скока минут с ошибкой sh: line 1: 5598 Segmentation fault: 11 NODE_ENV=production webpack --config ./webpack.config.aot.js Что это может быть?

Иван
30.01.2017
16:07:52
А если страничку прокрутить?
Не успел доделать ещё. Завтра на работе начну со скрола и спинер надо добавить пока ждём ответа от сервера

Vladimir
30.01.2017
20:23:08
@Ai_boy :)

Виталий
31.01.2017
04:15:02
Всем привет. Опять второй день бьюсь с этими роутами, и книжка на 92 страницы не помогает. Вот гист: https://gist.github.com/argnist/540182721a907c457ca1a72536e62661 Что нужно поправить, чтобы работало так: При переходе в корень редирект на conversations - показывает ConversationsComponent, в нем есть аутлет под ConversationItemComponent. При переходе на /conversations/:id нужно, чтобы в этот аутлет загружался ConversationItemComponent, при этом все остальные компоненты в шаблоне ConversationsComponent оставались? У меня то корневой не может средиректить, то при переходе по /conversations/:id ConversationItemComponent грузится в главный аутлет под ConversationsComponent, беда в общем.

Igor
31.01.2017
04:41:39
у тебя путь до /conversations/id ['', ':folder', 'conversations', ':id'], а ты хочешь ['conversations', ':id']

редирект пни отдельно в самый низ

а сверху оставь только : { path: 'conversations', component: ConversationsComponent, children: [ { path: ':id', component: ConversationItemComponent, } ] },

добавил тебе в гист

Виталий
31.01.2017
04:44:48
Местами поменять?

Igor
31.01.2017
04:45:13
гист чекни, я комент добавил

Виталий
31.01.2017
04:46:25
Ты получается просто местами поменял редирект и путь conversations

А и :folder убрал, но ничего не изменилось...

С корня редирект проходит на conversations, но не находит роут

Хотя полный путь http://localhost:8080/#/conversations/b7a10bdc-b893-43d5-9511-fa21d2870ea1 отображается сейчас как надо, но http://localhost:8080 редиректит на http://localhost:8080/#/conversations и показывает ошибку 404

гист чекни, я комент добавил
children: [ {path: '', component: ConversationItemComponent}, { path: ':id', component: ConversationItemComponent, } ] Вот так с виду работает нормально, но при открытии диалога, из-за того, что это разные роуты, он делает лишние запросы на список диалогов. Как избежать лишнего?

Igor
31.01.2017
05:02:37
вынеси ресолв списка выше

туда же в гист тебе пример закинул

у меня в системе каждый юзер имеет N профилей

Google
Igor
31.01.2017
05:04:27
поэтому в настройках надо отображать список его профилей

и иметь возможность редактировать каждый

вот роут что в гист добавил, делает это

там список профилей у родителя подгружается, а манипуляции все ниже

Виталий
31.01.2017
05:54:21
вынеси ресолв списка выше
У меня резолверов нет, запрос на список делается в конструкторе ConversationsComponent. Получается, что при переходе с '' на ':id' компонент пересоздается, чего по идее быть не должно.

Igor
31.01.2017
05:55:16
почему не должно, должно, это же другая ветка роутера

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

Виталий
31.01.2017
05:55:52
А как сделать одной веткой?

Igor
31.01.2017
05:55:53
не пересоздается тот компонент который будет общий для этих веток

Виталий
31.01.2017
05:56:26
ConversationsComponent общий для '' и ':id' но он пересоздается при переходе между ними

Igor
31.01.2017
05:56:30
ни как, просто заресолвь выше :) ну или точно так же в конструкторе комопнента выше по дереву сделай этот запрос

Виталий
31.01.2017
05:56:45
так уже некуда выше))

Igor
31.01.2017
05:57:06
ConversationsComponent у тебя не общий, не путай тот факт что ты его используешь и там и там, с тем что является общим

Виталий
31.01.2017
05:57:12
их всего 2 компонента, не в AppComponent же это пихать

Igor
31.01.2017
05:57:20
children: [ {path: '', component: ConversationItemComponent}, { path: ':id', component: ConversationItemComponent, } ] вот тут же написано что это чьито children

их всего 2 компонента, не в AppComponent же это пихать
сделай как у меня копонент обертку

будет AppComponent -> ConversationLayout -> Два других роута

в ComponentLayot в темлейт сунь аутлет, а в конструкторе запрашивай что нужно

он не будет пересоздаваться

Виталий
31.01.2017
05:58:54
Я не вижу разницы между моим ConversationsComponent и твоим AppLayout

Google
Виталий
31.01.2017
05:59:19
так же есть дети пустой путь и :id

Igor
31.01.2017
05:59:48
покажи роут целиком

я может сам уже запутался

Виталий
31.01.2017
06:00:50
Добавил коммент в https://gist.github.com/argnist/540182721a907c457ca1a72536e62661

Igor
31.01.2017
06:01:47
ConversationsComponent пересоздается?

Виталий
31.01.2017
06:01:56
да

@NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule {

вот так еще объявляется

Igor
31.01.2017
06:03:13
окей, тогда был не прав, по идеи не должен. Но я не проверял, знаю что ресолвер точно один раз отрабатывает при такой схеме

чекнул, у меня пашет

мой ProfileLayout только один раз отрабатывает конструктор

Виталий
31.01.2017
06:12:08
Как-то блин как будто 2 раза роутинг обрабатывается...

Igor
31.01.2017
06:13:47
может у тебя редирект срабатывает всё время

отруби его на время

Виталий
31.01.2017
06:21:14
Похоже все нормально работает, это хром какую-то фигню показывает... Сначала весь лог с нормальной подписью файлов, а потом повторяет с VM174350:31 вместо имени файла. Что это?

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

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