У меня есть несколько замечаний и предложений, пожалуйста, примите к сведению:

- Зачем нам вообще переходить с Angular 1 на Angular 2? Я бы сказал, что Angular 2 — это следующая основная версия фреймворка, с которой мы хотим работать, а также она предоставляет нам новые возможности, такие как рендеринг на стороне сервера, новый мощный механизм шаблонов и т. д.

- Я бы объяснил, что означает постепенное обновление, что благодаря ngUpgrade объявления Angular1 и объявления Angular2 можно использовать вместе.

- Я пытался использовать Angular2-Material вместе с ngUpgrade, но по какой-то причине это не работает, и я получаю следующую ошибку:

Ошибка синтаксического анализа шаблона: «md-input» не является известным элементом

У меня есть две версии моего приложения, одна из которых представляет собой гибрид Angular1 и Angular2, откуда была выброшена упомянутая выше ошибка, а вторая основана исключительно на Angular2, где все работает правильно. Я считаю, что это вызвано проблемами совместимости с ngUpgrade, но это только предположение, все же остерегайтесь этого!

- Есть много стратегий, в которых можно сделать апгрейд. Вам не обязательно экспортировать Angular2-модуль, это не то, чем занимается ngUpgrade, и это важно подчеркнуть, потому что, когда я следовал этому руководству, это было довольно запутанно, и я думаю, что это будет запутывать и других. В моем приложении я использовал один модуль для всего своего приложения, несмотря на то, что я использовал несколько модулей для версии приложения Angular1.

- Было бы неплохо иметь ссылку на статью, в которой рассказывается о процессе миграции одного компонента.

- Я бы предложил ознакомиться с адаптером обновления, когда мы обновляем и когда мы понижаем версию, и почему мы это делаем. Всегда предполагайте, что читатель статьи ничего не знает о ngUpgrade. В конце концов, это то, о чем эта статья, верно?

- ИМХО, понижение версии - одна из самых запутанных частей этой статьи. Когда вы посмотрите [официальную документацию Angular для адаптера обновления] (https://angular.io/docs/ts/latest/guide/upgrade.html), вы заметите следующий фрагмент кода:

```js
const HeroDetail = upgradeAdapter.upgradeNg1Component('heroDetail');
@NgModule({
импортирует: [ BrowserModule ],
объявления: [ ContainerComponent, HeroDetail ]
})
экспорт класса AppModule {}
```

Это *чрезвычайно* сбивает с толку, поскольку эта статья вводит вас в заблуждение. Если вы будете следовать его инструкциям, вы столкнетесь с циклической зависимостью. Я потратил много времени, пытаясь понять, что здесь происходит. Прочитав вашу статью, я понял, что в документах Angular есть несоответствие. Прошел реализацию ngUpgrade и наконец все стало понятно. Вам не нужно объявлять компонент после его обновления, адаптер обновления сделает это за вас. Я бы немного углубился в реализацию ngUpgrade, я бы объяснил, что мы передаем модуль Angular2 во время его инициализации, чтобы его можно было расширить позже, и что на самом деле это фиктивный модуль, а тот, который загружается, создается адаптером. Это сделало бы вещи намного яснее.

- Нет объяснения, что означает опция asToken.

Несмотря на мою критику, в целом я считаю эту статью отличной, потому что она очень информативна и прямолинейна. Хорошая работа, и я с нетерпением жду большего, откуда это взялось!