Иван
24.01.2017
04:53:33
Vladimir
24.01.2017
06:12:09
@Ai_boy я правильно понимаю, что Subect<T> работает по принципу обсерваблов?
Алексей
24.01.2017
06:15:11
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
Таир
24.01.2017
06:27:54
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 структурами данных
Таир
24.01.2017
06:30:30
Vadim
24.01.2017
06:30:36
Vladimir
24.01.2017
06:31:06
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
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
и в какой-то момент могут появиться компоненты, которые друг-друга дублируют
Vyacheslav
24.01.2017
07:39:59
Таир
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
Vadim
24.01.2017
07:46:08
Google
Vadim
24.01.2017
07:52:03
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';
есть?
Эта группа больше не существует