Виталий
31.01.2017
06:26:58
Он мне даже варнинги от tslint теперь по 2 раза показывает(
Кто-нибудь встречался с тем, что хром выполняет все скрипты по 2 раза? В FF и IE один, а в хроме - 2 ?
Иван
31.01.2017
06:53:50
Виталий
31.01.2017
06:54:42
Вообще куда бы я ни поставил брейк-поинт, он у меня 2 раза выполняется. Один раз как ts, другой из app.js
Google
Lends
31.01.2017
07:01:11
Как ts? Откуда у него ts?
Виталий
31.01.2017
07:03:27
В общем выключил настройку Enable JavaScript source maps, потом включил опять, и все стало работать нормально ??
Igor
31.01.2017
07:38:49
а если настроить воркспейс в хроме, то даже редактировать из хрома можно
Dmitry
31.01.2017
08:13:12
Всем привет, у меня почему-то ngrx-state-freeze ругается на подобный код
не могу понять, я же клонировал массив? и дальше уже с новым массивом работаю, ругается на код типа item.id = "id"
Igor
31.01.2017
08:16:03
может дело не в этом куске кода?
Dmitry
31.01.2017
08:16:37
имеенно в нем, index.js:19State mutation is prohibited inside of reducers.
может я что-то не вкурил? разве я не могу работать над объектами в reducer?
Alexander
31.01.2017
08:19:02
по идее reducer должен возвращать новое состояние, а не менять текущее
Dmitry
31.01.2017
08:19:54
дык он и возвращает, логика такая
пришел pyload => сделал копию => добавил id для items => вернул новый стейт Object.assign...
я почему-то был уверен, что я могу добавлять менять что хочу пока это не тригерит мутаций стейта
Google
Виталий
31.01.2017
08:21:18
Igor
31.01.2017
08:22:48
у тебя первый пустой роут срабатывает скорее всего
Dmitry
31.01.2017
08:23:00
похоже просто ошибка ngrx-freeze, если я все правильно понял, он смотрит на изменения вообще чего угодно, а не state
Igor
31.01.2017
08:23:18
children: [
{path: '', component: ConversationItemComponent},
{
path: ':id',
component: ConversationItemComponent,
}
]
первому pathMatch: full поставь
может у тебя просто в payload прилетает тоже самое?
Dmitry
31.01.2017
08:24:50
Igor
31.01.2017
08:24:56
да, в стейте
Dmitry
31.01.2017
08:25:15
бли
Vladimir
31.01.2017
08:26:55
так, а как контекст биндится к темплейту?
ngOutletContext передает лишь частично
можно, конечно, функции .bind(this)
даже будет работать
Dmitry
31.01.2017
08:27:57
Виталий
31.01.2017
08:27:58
Dmitry
31.01.2017
08:28:18
да, в стейте
вот код, который точно не меняет объект стейт, но внутри которого происхожит мутация
Vladimir
31.01.2017
08:28:25
<template *ngIf="itemTemplate" [ngTemplateOutlet]="itemTemplate" [ngOutletContext]="{$implicit:item,hoveredValue:hoveredValue,selectedValue:value,select:select}"></template>
Dmitry
31.01.2017
08:30:35
может так тоже нельзя? просто мне показалось логичным изменять объект в reducer до того, как вернуть state
Igor
31.01.2017
08:31:02
Не помогло :(
дампни в консоль ActivatedRoute посмотри что-где, может ты не там ищешь
Google
Dmitry
31.01.2017
08:40:09
ошибка
и самое тупое, что вот это валидный код
то есть если я сортирую массив, то все норм? а вот если внутри массива меняю свой-во, то нет?
Олег
31.01.2017
08:44:33
внутри массива обьекты, обекты имеют ссылочный тип
Igor
31.01.2017
08:45:00
я же выше писал у тебя в payload объекты которые уже были в стейте
то что ты делаешь в редюсере, сделай это за ранее, а потом в него уже пришли
Dmitry
31.01.2017
08:47:45
Igor
31.01.2017
08:49:50
ничего страннго, у тебя эти айтемы с стейте в текущем, ты хочешь обновить стейт, присылаешь эти же айтемы что уже там, но завернутые в новый массив, и тут же в редюсере начинаешь их менять, в итоге выплевываешь стейт опять же с этими же айтемами. Вот фризер и ругается. Потому что где то для конечного компонента это будет выглядить так:
пришел айтем, отрендерил айтем
пришел айтем, ссылка таже, не стал рендерить. //Но содержимое то изменилось
тебе как раз и указывают на эту потенциальную проблему
хочешь поменять айтемы, делай новые
и пуш их экшеном в стейт
Gleb
31.01.2017
09:02:02
А как должно выглядеть удаление, если у нас есть список с ids и объект с ключ-значение, то есть мы фильтруем массив, копируем его, а как из объекта стереть ? ведь delete это mutable действие
Igor
31.01.2017
09:04:05
создать новый объект
let old = { x: 1, y: 2, z: 3};
delete old.z;
let newOb = { ... old }
Gleb
31.01.2017
09:06:38
Но тогда получается что мы и мутировали стейт сразу
как только вызвали delete
Если только копировать тогда сначало, а потом удалять
Igor
31.01.2017
09:07:08
нет, в новом сейтете ведь не будет ссылок на старый
мутацию он задетектить только если заметит ссылку в новом стейте, которая уже была в старом
Google
Igor
31.01.2017
09:07:54
и при этом объект поссылки разный будет
в примере выше будет два разных объект, ни где не пересекающихся по ссылкам
Gleb
31.01.2017
09:09:34
Догнал, спасибо!
function removeByKey (myObj, deleteKey) {
return Object.keys(myObj)
.filter(key => key !== deleteKey)
.reduce((result, current) => {
result[current] = myObj[current];
return result;
}, {});
}
Нашел вот
Тоже вариант
Vitaliy
31.01.2017
09:39:49
ребят
как лучше
делать все отдельными компонентами
или например
в админкомпонент влаживать компоненты типа сирчюзер ченжюзер и тд
или лучше что бы в одной папке напиример компонентс все компоненты и потом собирать
или это никакой роли не играет?
Mikhail
31.01.2017
09:42:40
andretshurotshka?❄️кде
31.01.2017
09:46:54
А че не так?
Gleb
31.01.2017
09:47:21
чуть глубже только
а так да точняк
Vitaliy
31.01.2017
09:48:11
ау
хелп ребятки
Google
Mikhail
31.01.2017
09:52:56
Каїн
31.01.2017
09:54:32
delete более затратная операция так как меняет структуру объекта. Удаление значение вместо проперти куда быстрее
И ещё есть запары с ownProperty и prototype.sameNameProp
Igor
31.01.2017
10:01:03
хелп ребятки
разные подходы. Мне удобна семантичная структура, когда всё что связано с сущностью лежит рядом. Т.е. у меня к примеру есть раздел в системе отвечающий за настройки, следовательно под него создан модуль, каждая страница в разделе имеет свой компонент. Если есть директивы/компоненты/пайпы нужные только этому разделу они будут лежать там же. Если одна из нужных директив нужна ещё комуто, она уезжает в common модуль
Vitaliy
31.01.2017
10:03:24
Каїн
31.01.2017
10:04:07
Ага, темплейты в темплейтах
Vitaliy
31.01.2017
10:04:23
а то щас делаю проект, а он скотина такой большой, что когда мне дали доделывать я там потерялся потому, что там около 40 компонентов и еще и название непонятные )
Каїн
31.01.2017
10:04:23
Контроллеры все в папке контроллеров
Igor
31.01.2017
10:04:53
Vitaliy
31.01.2017
10:04:56
Dima
31.01.2017
10:06:20
хелп ребятки
мне больше по душе подход модульный, когда файлы группируются по принадлежности к фиче, а не по типу. такой подход советуют профи еще начиная с 1го. а во втором angular-cli его применяет, так что имхо, это уже стандарт практически
Vitaliy
31.01.2017
10:09:05
Roman
31.01.2017
10:10:46
всем привет! кто-то юзал Ionic 2 для работы с Eddystone и IBeacon?
Dima
31.01.2017
10:12:27
ну я например хочу сделать так: components; modules; services; pipes; правильно будет?
да, только components - это совсем общие, в модулях так же компоненты есть. например, есть модуль calendar. в нем дофигища компонентов разных, но они имеют смысл только в контексте калдендаря, и экспортится из модуля календарь только один компонент, например, app-calendar, который все внутренние использует сам, а для использования буз календаря они не доступны
то же самое и для сервисов / пайпов. Общие в shared, а остальное все по модулям
Vitaliy
31.01.2017
10:14:55
Леонид
31.01.2017
13:02:41
всем привет)
посоветуйте плес какой грид заюзать для
Angular2+TypeScript+Webpack
Олег
31.01.2017
13:07:18
bootstrap? :D
Леонид
31.01.2017
13:08:27
?
Иван
31.01.2017
13:19:00
Леонид
31.01.2017
13:19:50
да тут заказчик играет очком не может дизайн выдумать
Эта группа больше не существует