Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Material Components for the Web vs Angular Material 2 [closed]

Recently, the successor to MDL (Material Design Lite) project was launched as Material Components for the Web. One of its goals is "Seamless integration with other JS frameworks and libraries".

There is another project Angular Material2 which provides material design components specifically for Angular (v2+).

Both projects are creating material design based UI components. Also, they have similar set of components ready/in-active-development, and same set of components as coming-soon (listed here and here).

Can someone please help me understand the overlap between 2 projects and which one should I pick for new projects?

At a fundamental level, I do understand Angular Material2 will more seamlessly and tightly integrate with Angular projects, while Material Components for the Web will provide hooks for multiple JS frameworks to use. But I fail to see reason for overlap and which one will have more momentum (read more components).

like image 844
DeepakV Avatar asked Dec 16 '16 08:12

DeepakV


People also ask

What is the difference between Angular material and material design?

Angular material and material design basically the same. Material design is abstract for mobile and web. Angular material is implemented for Angular. So if you use "Angular material" you are using "Material design".

Is bootstrap or Angular materials better?

Angular Material Framework can be used to design High-quality websites and web apps that are mobile-friendly. Bootstrap Framework can be used for developing cross-platform apps that work well on desktops. Angular Material Framework does not support the Responsive Oriented Approach (ROA).

Can I mix bootstrap and Angular material together?

Yes, you can use parts of Angular Material and Bootstrap together in the same web or mobile project. Developers need to be careful not to use the same components, which can clash.

What are material components in Angular?

Angular Material comprises a range of components which implement common interaction patterns according to the Material Design specification. Form Controls Controls that collect and validate user input. Navigation Menus, sidenavs and toolbars that organise your content.


Video Answer


2 Answers

Full disclosure: I work on Material Components for the web, so my opinion may be a bit biased :)

TL;DR use whichever library helps you build your UI in the most efficient way possible, or use them side-by-side. Check out our angular2 integration example angular-mdc-web to see how to wrap a MDC-Web component using ng2.

The goal of Material Components for the web (abbrev. MDC-Web), as has been alluded to, is to create a canonical implementation of Material Design components for the entire web platform. Angular/material2 is an excellent library - many of us on the Material Design team, myself included, have contributed to it - but it is exclusionary to non-angular2 applications. Additionally, non-google libraries and frameworks such as React, Aurelia, Vue, and others have no official solution to suit their needs.

That being said, Angular2 falls under our scope of the "entire web platform", and we definitely want to support it because of that. At this stage in both projects, we may have some components you need that angular/material2 does not, or vice versa. I'd encourage you to use whichever library helps you accomplish your goals in the best way possible. That could be angular/material2, it could be MDC-Web, or quite honestly it could be both. For example, you could use our select component along side material2's components, and things should work just fine. As mentioned in the TL;DR,angular-mdc-web is a fully-featured library that wraps MDC-Web in an idiomatic angular2+ API.

On a final note, MDC-Web is the only library that is developed by the Material Design team itself. Because of this, we are able collaborate on and iterate with the same people who author the Material Design spec.

like image 191
Travis Kaufman Avatar answered Sep 22 '22 21:09

Travis Kaufman


Update( 16 March 2018 ):

From the comments provided by @elDuderino Material2 seems to have a way to customize . The answer provided was before Material had cdk ..

https://material.angular.io/guide/customizing-component-styles

Both frameworks are very matured now. I use both of them in different projects. It took me only a week to migrate a project from one framework to other. So I would suggest try both and see which you find comfortable.


I will share my experience. Its opinionated and biased. Love to be corrected.

We are starting from scratch and using Angular. We decided to go with Material. I started my hunt for a better framework and tried all of them: Materialize, MDL, Angular Material 2 and finally MDC for web.

Here are my observations, especially for Material2 vs MDC for Web.

Material2

  • Pros
    • Readymade. Everything is available and ready to start working on
    • Architecture close to Angular
  • Cons

    • Components list is not complete yet ( they will get over the time, so its ok )
    • Customizing is impossible

    I know we can add themes, that's all. All the HTML and CSS for the components is added in Angular Components. So it's compiled as JavaScript and applies at runtime. So, there is no way to override the behavior. I tried for a week and could not do it.

    Here are questions I asked ( one of them marked to close as it appeared to be asking for opinions -.- )

    How to customize Angular Material 2

    How to Extend Angular Component style

    Of course they did not get any answers and I could not customize them. If I am wrong, please direct me.

Check update provided above

  • Documentation is bad

    Lets see an example. See the number of examples provided.

    MDC for web card examples

    Material2 examples for Card

MDC for Web

  • Cons

    • Not readily available for Angular

    We can't start using it straight away if you want to do it Angular way. Need to write a wrapper for Angular for each component. Might take some effort. But every team can afford some time to customize and there are third party efforts to make it easier. If it's ok not to do it in angular way, I believe we can start off without the wrappers.

    • Components list is not complete yet ( they will get over the time, so it's ok )
  • Pros

    • Generic, not tied to framework. Always safe to invest in.
    • More contribution, since other frameworks developers also use it. Over the time it gets more contributions and future proof (almost )
    • Totally customizable.
    • Appears like only framework Material design team is directly involved with
    • Can use the knowledge/styles for mobile devices too.
    • Documentation is awesome. Looks like a lot of effort and time is put in.
like image 37
Vamshi Avatar answered Sep 23 '22 21:09

Vamshi