Angular 2 n'est pas vraiment MVC (mais je suppose que vous pouvez établir des parallèles). Il est basé sur les composants. Laissez-moi vous expliquer :
Angular 1 est MVC et MVVM (MV*). Angular 1 était révolutionnaire pour plusieurs raisons, mais l'une des principales était l'utilisation de l'injection de dépendances. C'était un nouveau concept par rapport à d'autres frameworks JS comme Backbone et Knockout.
Puis React est apparu et a complètement transformé l'architecture frontale. Il a fait réfléchir le front-end à d'autres options que MVC et MVVM. Il a plutôt créé l'idée d'une architecture basée sur les composants. Cela peut être considéré comme l'une des transformations les plus importantes de l'architecture frontale depuis HTML et JavaScript.
Angular 2 (et Angular 1.5.x) a décidé de suivre l'approche de React et d'utiliser l'architecture basée sur les composants. Cependant, vous pouvez établir de légers parallèles entre MVC, MVVM et Angular 2, c'est pourquoi je pense que cela peut être un peu confus.
Cela dit, il n'y a pas de contrôleurs ou de modèles de vues dans Angular 2 (à moins que vous ne les fabriquiez vous-même). Au lieu de cela, il existe des composants, qui sont constitués d'un modèle (comme une vue), de classes et de métadonnées (décorateurs).
Par exemple, les modèles sont les classes qui contiennent les données (par exemple, un contrat de données pour contenir les données renvoyées par le service http en utilisant @angular/http). Nous pouvons créer une nouvelle classe qui ajoute des méthodes et des propriétés (logique), puis fusionner le modèle et la classe. Cela crée quelque chose comme un ViewModel. Nous pouvons ensuite utiliser ce ViewModel dans notre composant.
Mais appeler la classe d'un composant ou un service un ViewModel ou un contrôleur n'est pas vraiment correct. Le composant contient le modèle et la classe. IMO, c'est un peu comme la théorie de Liskov - un canard n'est pas un canard - n'essayez pas d'imposer le modèle MVC ou MVVM dans les composants car ils sont différents. Pensez à Angular 2 comme à des composants. Mais je peux comprendre que les gens fassent des parallèles pour faciliter leur compréhension initiale.
Angular utilise également les modules, qui font partie d'une prochaine version de JavaScript (ECMAScript 6). C'est très puissant car JavaScript a toujours eu des problèmes avec les espaces de noms et l'organisation du code. C'est là que les importations et les exportations entrent en jeu dans les composants.
Liens utiles :
https://medium.com/javascript-scene/angular-2-vs-react-the-ultimate-dance-off-60e7dfbc379c
Est-ce qu'angular2 est mvc ?