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

Страница 150 из 179
Vladimir
24.01.2017
06:12:09
@Ai_boy я правильно понимаю, что Subect<T> работает по принципу обсерваблов?

Алексей
24.01.2017
06:15:11
@Ai_boy я правильно понимаю, что Subect<T> работает по принципу обсерваблов?
Да. Только Subject может быть и observable а может и subscription. И слушать и генерить события

Vladimir
24.01.2017
06:15:32
Ну next генерит события

Google
Vladimir
24.01.2017
06:20:41
мне интересен принцип, как шаблон понимает, при ChangeDetectionStrategy.OnPush, когда ему нужно отрендерить заного

точнее, как ангуляр понимает

Таир
24.01.2017
06:22:33
тупо бежит по всем биндингам вниз с корня

сравнивает новое со старым по ссылке

и если ссылка не совпадает, метит поддерево на перерисовку

т.е. не совсем

бежит вглубь дерева и метит и перерисовку в тех узлах, что изменились

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

Vladimir
24.01.2017
06:25:19
ну я примерно так и представлял. Т.е. OnPush дает некую оптимизацию

Alexander
24.01.2017
06:25:23
у компонента есть инпуты, если эти инпуты имеют новые референсы - дерево надо перерисовывать

дерево - это компонент и его детишки

Таир
24.01.2017
06:25:50
выйгрыш в том, что подразумевается, что если ссылка в родительском объекте совпала, то у дочерних тоже должна совпасть

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

Google
Gleb
24.01.2017
06:26:15
Привет как выглядеть должен MockStore? от NGRX стора. Мой вариант просто сервис с select методом и там switch case type of ... case type of ... и там просто в зависимости от передаваемой подписки вернуть что то

Alexander
24.01.2017
06:26:31
в случае, если у тебя компонент сам внутри меняет свое состояние, требуется вызывать ChangeDetectionRef.markForCheck(). кстати чем это отличается от detectChanges и когда, что лучше использовать?

Vladimir
24.01.2017
06:27:00
Кстати, gcc дает уменьшение вендора с 465кб до 367, а мэйн с 200кб до 48. В gzip мэйн всего 8кб

Таир
24.01.2017
06:27:28
но тут вы сами уже должны данные так организовать
чтобы подразумевалось, что неизмененая ссылка на верхних уровнях значит неизменность объектов на нижних

Vladimir
24.01.2017
06:27:52
gcc - google closure compiler. А то вдруг :D

Vladimir
24.01.2017
06:29:19
внимание, вопрос. TreeShaking вообще при прод билде работает или нет?

есть статья, в которой используют ngc, rollup, uglify

Vadim
24.01.2017
06:29:35
Да, если настроить

Таир
24.01.2017
06:29:56
Да, если настроить
можно поподробней?

Алексей
24.01.2017
06:30:07
OnPush - выключает проверку внутренности объектов передоваемых в компонент и тупо сравнивает по ссылке. Если ссылка на объект изменилась - ищет изменения дальше по дереву. Из за этого onPush хорошо работает с imutable структурами данных

Vadim
24.01.2017
06:30:36
можно поподробней?
Алексей лучше подскажет на счёт этого.

Alexander
24.01.2017
06:31:23
вчера второй вебпак натравил на проект и он уже работает с es2015 модулями, которые tree-shackable. судя по всему этот tree shaking происходит внутри UglifyJsPlugin, который как раз обычно в продакшене и запускается

Vadim
24.01.2017
06:32:13
Переход с webpack 1 на webpack 2 был для меня удивительно лёгким.

Менять пришлось лишь пару мелочей.

Vladimir
24.01.2017
06:33:09
https://github.com/angular/angular-cli/issues/2901

Vadim
24.01.2017
06:34:02
Так это ng-cli

Google
Vadim
24.01.2017
06:34:25
Руками ничто не мешает настроить, если это кастомный проект

Vyacheslav
24.01.2017
06:38:22
Как определить выделять ли какой-то элемент страницы в отдельный компонент?

Alexander
24.01.2017
06:40:45
по идее, как сами внутри команды решите

но судя по демо-проектам народ ориентируется на Single Responsibility Principle

т.е. как только компонент начинает выполнять чуть больше, чем одну UI задачу, он становится кандидатом на дробление. я пока так это понимаю. что смущает при таком подходе - получается довольно много файликов, в именовании которых можно даже начать путаться :)

Vyacheslav
24.01.2017
06:43:23
Спасибо )

Алексей
24.01.2017
06:51:59
Vladimir
24.01.2017
06:54:14
а какие еще есть варианты?

Igor
24.01.2017
07:09:56
насколько грамотно работать с onPush+Subject, в случае, когда весь компонент - форма с использованием reactiveforms?
Это вариант будет работать только если вы эмитите из сабжекта новый объект, т.е. если прилетит тот же самый, ангуляр по ссылке сравнит, и решит что ничего не поменялось

c ngrx/store onPush прекрасно будет работать

Vladimir
24.01.2017
07:11:44
Igor
24.01.2017
07:12:50
с реактивными формами норм занятие, достаточно удобно использовать

Vladimir
24.01.2017
07:14:02
Ну так зачем мне всю форму в сторе хранить?:)

Igor
24.01.2017
07:23:34
я не храню форму в сторе, у меня алгортим такой: в onInit билд формы, и подписка на значение из стора, подписка вызывает setValue у формы и выставляет всё что нужно в ней при сабмите идет диспатч экшена, который обнавляет данные модели в сторе, попутно через эффект сохраня на сервер т.е. в компоненте две точки одна мапит данные из модели на форму, вторая точка мапит данные из формы в модель но у меня сложная модель, там больше 10 форм на разных вкладках, каждая форма частично обновляет модель

т.е. стркутура формы !== модели, поэтому стейт формы не хранится в сторе, хранится стейт модели, которая юзается много где

Vladimir
24.01.2017
07:25:36
Она просто сама по себе больше нигде не используется (модель)

Мы только начинаем перекатываться на ангуляр

И на данный момент совать ngrx/store нет смысла

Igor
24.01.2017
07:30:45
да я тоже так думал, плюс к этому можно добавить что ngrx/store заставляет писать много кода перед тем как всё начнет хоть как то работать. Но зато потом даёт ускорение, когда каркас есть, намного легче добавлять новые экшены и сущности в стор

Google
Vladimir
24.01.2017
07:31:22
Не на этой итерации:)

Igor
24.01.2017
07:33:58
в любом случае даже без стора, при сабмите форма передает всю свои данные одним объектом, которым можно заменить модель, получится что ссылка изменится, и всем компонентам предется перерендерится

Таир
24.01.2017
07:37:43
Как определить выделять ли какой-то элемент страницы в отдельный компонент?
мой принцип — выделять только когда "припрет", например, когда начинает дублироваться код

иначе, можно довыделяться :)

Алишер
24.01.2017
07:38:17
в каком смысле

Vladimir
24.01.2017
07:38:58
Разнесется код так, что потом не понять будет

Таир
24.01.2017
07:39:11
ну плодится такое большое кол-во компонент, что потом забудешь, что за что отвечает

Vladimir
24.01.2017
07:39:27
Документацию писать?

Таир
24.01.2017
07:39:37
и в какой-то момент могут появиться компоненты, которые друг-друга дублируют

Таир
24.01.2017
07:40:33
но SRP никто не отменял

Denis
24.01.2017
07:41:01
Всем привет

Vadim
24.01.2017
07:41:33
Уж лучше так, чем огромные компоненты

Вот у меня сейчас, например, есть форма, состоящая из 4 шагов с немалым количеством логики. Логически на разные компоненты это не разобьёшь, но сам компонент в итоге получается очень объёмный. Сделай я подобное там, где это можно разбить, я бы сам застрелился поддерживать этот код уже через пару месяцев.

Таир
24.01.2017
07:43:37
вообще, я думаю, дробить нужно только при рефакторинге, а не сразу проектировать компонентами на каждый чих

Vladimir
24.01.2017
07:44:50
Разбейте форму на саб формы

Lends
24.01.2017
07:44:54
а как же "react way" и наследование кнопок?

Vladimir
24.01.2017
07:44:56
И используйте formGroup

Иван
24.01.2017
07:46:02
Вот у меня сейчас, например, есть форма, состоящая из 4 шагов с немалым количеством логики. Логически на разные компоненты это не разобьёшь, но сам компонент в итоге получается очень объёмный. Сделай я подобное там, где это можно разбить, я бы сам застрелился поддерживать этот код уже через пару месяцев.
У меня тоже форма с большим кол-вом полей и 4 шага. Я выделил семантические блоки внутри формы (паспорт и т.д) и создал на каждый блок свой компонент. Таким образом я знаю, что паспорт у меня обрабатывается в компоненте паспорта и так далее. Я не знаю, правильно это или нет, но мне удобно...

Vadim
24.01.2017
07:46:08
Разбейте форму на саб формы
Тем кроме самой формы ещё много элементов.

Google
Vadim
24.01.2017
07:52:03
У меня тоже форма с большим кол-вом полей и 4 шага. Я выделил семантические блоки внутри формы (паспорт и т.д) и создал на каждый блок свой компонент. Таким образом я знаю, что паспорт у меня обрабатывается в компоненте паспорта и так далее. Я не знаю, правильно это или нет, но мне удобно...
В моём случае слишком много общих элементов на всех шагах. Чтобы нормально вынести их, придётся делать ещё один компонент с router-outlet, а это будет уже третий вложенный компонент с ним. В таком подходе есть как плюсы, так и минусы. Потому я предпочту пока что не делать так.

Vladimir
24.01.2017
08:10:28
Можно как-то из продбилда убрать хэши?

Vadim
24.01.2017
08:12:43
А зачем?

Это сломает принцип протухания кеша при деплое нового билда.

Vladimir
24.01.2017
08:15:17
В общем-то логично, да только за кеш отвечает у меня бэк

Плюс я хочу gcc поверх накидывать

Denis
24.01.2017
08:18:02
Парни

angular-cli чтоб сгенерировать роутинг

на существуещем модуле

типа вот так? ng g module my-module —routing

помогите понять ошибка вот такая - Unhandled Promise rejection: No ErrorHandler. Is platform module (BrowserModule) included? ; Zone: <root> ; Task: Promise.then ; Value:

я так понимаю что-то забыл включить в файл main?

Vyacheslav
24.01.2017
09:11:58
import { BrowserModule } from '@angular/platform-browser';

app.module

Denis
24.01.2017
09:14:14
app.module
Спасибо, теперь вот такое The module AppModule was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.

метода такого уже нет?

Vyacheslav
24.01.2017
09:16:04
import { NgModule } from '@angular/core'; есть?

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

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