Существует несколько вопросов и дискуссий об Angular2, использующих глобальные переменные и глобальные состояния, но мои особые потребности немного больше, чем это, и я изо всех сил стараюсь подходить к нему (в основном из-за противоречивой информации, опубликованной в разное время во время углового2 цикл выпуска).Angular2 Глобальная модель данных?
Так вот, я по сути создаю SPA (приложение с одной страницей) для работы в качестве экрана ввода заказа для офиса продаж.
У меня есть структура немного как это:
|_main_order_entry controller.ts
|__order_line_controller.ts
|_product_controller.ts
|_colour_controller.ts
|_size_cotroller.ts
|_promotion_controller.ts
|_comments_controller.ts
Итак, когда вы загружаете main_order_entry_controller.ts, вы это pre_populates некоторых основных данных, следующий порядковый номер в последовательности, и дата заказа/время, легкий материал.
Тогда мы начинаем с order_line_controller, где все становится немного сложнее, позволяет сказать
- product_controller, является выпадающий список, вы выбираете продукт Затем заполнит вид цветной контроллер с доступные цвета для выбранного продукта
Как только вы выберете цвет, он заполняет контроллер размера с размерами , доступными в цвете и выборе продукта, если вы ch ange любой из этих опций, другие выпадающие окна обновляются с новыми данными, возвращаемыми API REST, .
После того, как вы завершили один order_line_controller экземпляра, он автоматически вставляет целый новый экземпляр order_line_controller, поскольку число потенциального OrderLines безгранично.
Теперь в любое время, если какой-либо из выпадающих списков будет изменен, REST api будет повторно вызван, и действительные параметры будут обновлены.
Для этой работы, мне нужен чистый способ хранить все данные, в то время как пользователь загружает main_order_entry_controller.ts
Теперь мое мышление является лучшим способом сделать это было бы создать две модели
main_order_model.ts
order_line_model.ts
Затем создать службу, каждый раз, когда main_order_entry_controller.ts загружен, он создает новый экземпляр main_order_model.ts, а затем для каждого order_line_controller, который загружается, он создает новый экземпляр order_line_model.ts
Давать мне услугу со структурой данных немного, как это:
{
"orderdate": "01/01/2017",
"orderef": "JHASGAZXC",
"orderlines": [
{
"linenumber": "1",
"product": "T-SHIRT",
"colour": "BROWN",
"size": "Large",
"promotion": "True",
"comments": "Customer has requested gift wrapping"
},
{
"linenumber": "2",
"product": "JEANS",
"colour": "BLUE",
"size": "X-SMALL",
"promotion": "False",
"comments": "None"
}
]
}
Тогда каждый раз, когда значение контроллера изменяется , он обновляет модель данных в глобальной службе, а затем каждый контроллер теоретически может вытащить любые данные, необходимые ей из службы.
Im довольно новый для Angular2, так что я ищу правильный Angular2 способ сделать это, я просил об этом на официальном канале gitter на этой неделе и не очень повезло, спасибо очень.
Большое спасибо, я добавлю ответ, когда напишу код, чтобы отразить мой вопрос, чтобы показать рабочий ответ, это именно то, что я искал. – crooksey