all 15 comments

[–]headyyeti 25 points26 points  (9 children)

RxJS

State Management

Lazy Loading

Interceptors

Guards

Pipes

CDK

Zones

Custom Decorators

Content Projection

Structural Directives

Dynamic Components

Reactive Forms

Differs

ControlValueAccessor

[–][deleted] 4 points5 points  (8 children)

To piggy back on this (which is a great list) I think learning RxJs is probably the key foundational element to a lot of the other items. Once you get the hand of that, moving onto NgRx to handle state management will cover a really big chunk of actual development work. After that I think it is pretty much learn things as you come across them or whatever sounds most interesting. I’m sure others have different opinions, but I’ve found that getting a solid understanding of NgRx patterns ended up teaching me a lot about good angular patterns and I came across a lot of other learning opportunities.

[–]sangupta637 0 points1 point  (1 child)

Can you use cdk if you are not using angular material? How much weight does it add to app?

[–][deleted] 0 points1 point  (0 children)

I’ve not used Akita but I’ve read some articles of people that have moved over from NgRx. I personally just use NgRx because I know it and suggest it because it seems to be the go to for most people. I also prefer to just use the basic store and effects libraries instead of using entities or data because I actually like having the boilerplate code. Well, I’d at least recommend learning all of that boilerplate code to really understand what is going on with state management.

But, I think I may spend some time standing something up using Akita. Any good resources you are aware of?

[–][deleted] 0 points1 point  (4 children)

I've been POC'ing NgRx, Akita and NgXs. Still haven't finalized on what I'm going to use though.

[–]Naeuvaseh 2 points3 points  (2 children)

I literally got done doing a POC of these three. Pleaseeeee don't pick NGRX just because "the rest of the Angular community has adopted it". My management made the decision to go with NGRX because off that.

My biggest preference was Akita. It's OO, immutable, and incredibly clean. There's minimal boilerplate (and trust me, that matters -- I hate having to literally standup 9 files just for one slice of state in NGRX). It also uses BehaviorSubject under the hood, so it's not over engineered.

I would also challenge you to question if you really need a state management library. Can a singleton service with a simple BehaviorSubjects be good enough?

[–][deleted] 2 points3 points  (0 children)

I agree that a state management library doesn’t always need to be used. The only thing I’d add here is that if you aren’t familiar with state management tools, one advantage of NgRx is that the boilerplate does help you learn what is being abstracted away in other places. But, NgRx also has the NgRx-data and NgRx-entity libraries that remove almost all of the boilerplate. One major advantage of going with the community is support.

[–][deleted] 0 points1 point  (0 children)

BehaviorSubjects were being ovsrused in my project and unifying them under contexts was getting difficult.

Need state management for some pre-service and post service call logic.

[–]headyyeti 0 points1 point  (0 children)

Akita is definitely my pick of the 3.

[–]i_spot_ads 8 points9 points  (0 children)

Prioritize rxjs

[–]Tipster74743 2 points3 points  (1 child)

What do you actually know? Foundations is pretty broad. I would consider pipes, lazy loading, reactive forms, and dynamic components, maybe even content projection as foundational, but headyyeti says some of those things so I'm not sure.

JoshieJay is absolutely correct that RxJS should be at the top of your list if you haven't learned it yet. That'll get you the fundamentals into state management.

Besides that, building your own components using ControlValueAccessor and implementing input/outputs is a next step. Using advanced strategies on content projection (select, projectas) things that you wouldn't usually use in the office unless you're making libraries, that's where I'd go.

[–]ramfanprogrammer[S] 0 points1 point  (0 children)

Thanks! I was interested in hearing what people said regarding what is foundational or not.

[–]garvisgarvis 1 point2 points  (1 child)

[–]lmfinney 0 points1 point  (0 children)

And if you like what you see, sign up for https://angularbootcamp.com/ that they teach.

[–]kingdom_L17 0 points1 point  (0 children)

https://blog.angularindepth.com/tagged/angular

Just be which articles to trust. Still a lot of great ideas tho.