With the advent of Angular 2.0, which framework's component structure is best and which one you would prefer to use?
Use Vanilla JS (ES6), it is fastest, simplest, cheapest solution.
The best front-end architecture is no static architecture.
Just to add to what @michaelgilley said, also have a look at the license you are granted when using these frameworks. React has some less than great exceptions hidden in a separate document.
The license granted hereunder will terminate, automatically and without notice, if you (or any of your subsidiaries, corporate affiliates or agents) initiate directly or indirectly, or take a direct financial interest in, any Patent Assertion: (i) against Facebook or any of its subsidiaries or corporate affiliates, (ii) against any party if such Patent Assertion arises in whole or in part from any software, technology, product or service of Facebook or any of its subsidiaries or corporate affiliates, or (iii) against any party relating to the Software. Notwithstanding the foregoing, if Facebook or any of its subsidiaries or corporate affiliates files a lawsuit alleging patent infringement against you in the first instance, and you respond by filing a patent infringement counterclaim in that lawsuit against that party that is unrelated to the Software, the license granted hereunder will not terminate under section (i) of this paragraph due to such counterclaim.
A "Necessary Claim" is a claim of a patent owned by Facebook that is necessarily infringed by the Software standing alone.
A "Patent Assertion" is any lawsuit or other action alleging direct, indirect, or contributory infringement or inducement to infringe any patent, including a cross-claim or counterclaim.
github.com/facebook/react/blob/master/PATENTS
Angular2 and VueJS as far as I know doesn't have special clauses like this.
Michael Gilley
Frontend Engineer at Zapier
Why, it depends on the application requirements. Angular 2 is going to yield a heavily structured, opinionated framework to develop your app. React (or Preact) takes care of only the view layer. You can look at this as either freeing you to choose the rest of your stack (state management, REST calls, routing, etc.) or forcing you to construct all these components yourself.
In my experience there have been many reasons for going with a micro-service based application constructed of many smaller pieces because it often lends itself to quick iteration and piecemeal patches for bugs as opposed to monolithic releases from your favorite library. The flip side to this is of course little-to-no long term support, which will require regular maintenance.
There are Typescript bindings you'll need to worry about with Angular that presents a whole other layer on top of your app that won't be a concern in React. And there are already whole UI stack templates out there ready to use for React (create-react-app) and boilerplates for Angular. It really comes down to what will best suit the needs of your application and the developers, both present and future.
There is also a sort of middle-of-the-road candidate gaining steam called Vue.js. You may want to take a look at it.
Without more info on what you're building that's the best I can do.