-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Major architecture changes coming #171
Comments
First of I'm happy to participate in any way necessary (calls, implementation etc.) to get this off the ground quickly. My schedule is wide open for this (based in Europe). Sidetrack: |
This is going to be a long one, please bear with me. Since there is going to be some rearch I tried to think about what the benefits / goals are of First lets go though the key advantages of using
At the core it achieves this by implementing This approach solves A LOT of problems and has served us well, but it does have one major caveat. It hides the controls of a sub-form from the parent. However without standardization of the structure of sub forms, there was simply no other way to achieve enabling the above. Maybe you already know where I'm heading with this. By using The main three pieces would be:
Custom directive e.g.
|
First off sry for spamming this thread, but couldn't let this rest yesterday and spend all night getting this up and running based on latest v4 (as we have a ng8 project where we need it). This is with But (you knew it was coming):
At this point I thought this approach was a dead end and then it hit me. Why not go even simpler:
With this ins mind, what would be the role of
But it would not be involved in value / observable handling at all (besides transformation inside the wrappers for Thoughts? Totally understand if this is not a direction you would consider. |
Couple of lines of code are better than thousand words (basics are already there and have it up and running in our project): https://github.com/ntziolis/ngx-sub-form/tree/sub-form-controls-simpler |
Very good summary 👍
Correct. Unfortunately ngx-sub-form was created initially because of the lack of support for sub forms.
I have a little idea 😄!
I'll answer point by point: Custom directive e.g. [subFromGroup]This is a very interesting point. But I suspect we may run into some expression have changed error as modifying the sub form (which would be attached to the parent) would trigger instant changes for the parent component. Not 100% sure though... "Wrappers" for FormGroup / ArrayForm
One gap I've been trying to close into #147 is the fact that we're not sure at build time about how things get connected within the view. Unlike an input, there's no way to really type a control value accessor.... So we do not get any AoT safety. If we could guarantee that for sub forms that'd be 🤯. I know it's not exactly what you were referring to but I got inspired ha.
As long as this smartness is black boxed into the lib and it's easy to consume I'm pretty happy with it. Also, with the ongoing rewrite I think I've managed to get a simpler workflow. Not saying it'll change much to the overall complexity but it should be way easier to read 😄!
As you've probably noticed by now, we've tried to keep ngx-sub-form as a utility library. We've considered multiple times going all in and create a module that'd contain some directives, could have services etc. But we managed to avoid that (so far).
As much as I like the idea, I think this would have quite a few issues with the expression has changed error.
Some very inspiring ideas but I'm afraid some of them may not work properly in Angular world. But it might be definitely worth a try with at least a POC. The biggest thing holding me back though is the fact that sub forms could only work well together with sub forms from the lib. Imagine you want to consume from an external lib a sub form (which is implemented simply using ControlValueAccessor), that one wouldn't report up to the parent. But I hear you and understand the frustration around some edges with ngx-sub-form not being able to handle all the use cases for now.
Please don't apologize for that. You're raising really good points and I hope you keep doing that! 😸
This is no longer an issue with the rewrite I've been working on. I hope to be able to clean up a bit and share some code that you can look at soon, even though it's definitely not finished. So far, I managed to:
What I couldn't get working well is the
Agree. And I have a nice/safe way of hooking into a component instance to then expose all the life cycle hooks as observables 🔥... But as explained above it doesn't work with Ivy anymore...
I like that because I think we could get better type safety out of it!
How would that work?
Wow never thought of that! That might actually be pretty nice yes but I'm unsure how you'd use that. Do you have any example consuming that new API? |
First off, hats off to being open to input like that. I call this out as this has not always been my experience when providing feedback especially if it goes to the heart of a project. I'd love to share the actual project I used while testing this, but as I was crazy enough to put it in one of our actual projects (to see where things blow up beyond simple usage). Hence, below is an outline of the key pieces. If the parent is a root-sub-form (assuming the old structure for now):
That's really is all you have todo to hook things up. The You raise a good point around interoperability with non ngx-sub-form parents. This would also have been a full stop blocker for us if not possible. Here is what this would look like:
So yes, there is a dependency on usage of
Considering the above this feels like a good integration story that external devs can easily understand even if they have never seen ngx-sub-form. However should this would not be acceptable, it would also be possible to create a generic class that wraps a sub-form into a Further usage:
|
I'm going to the rest of you comment and reply back later. Just wanted to make sure you have usage samples first. |
Sry for the long silence. Work got in the way :) over the weekend I had time to migrate the demo project in the repo to use the outlined approach. Need to put some finishing touches on it and will report back here. |
While building the below I kept in mind that we might wanne move away from inheritance. I do have some ideas how to make the approach below work without inheritance as well. I just based it on what was already available. Status updates
The "good" thing no matter where this leads is I learned A LOT about reactive forms, not sure I wanted to know all that but I'm sure it will come in handy moving forward :) |
So there seems to be some movement on forms https://www.twitch.tv/videos/620888602, trying to setup a call / twitch session |
Very interesting read. I knew of mixings, but I didn't know about component features. Together with Feature interfaces its a great way to enforce structure of a component without inheritance: https://indepth.dev/component-features-with-angular-ivy/ |
Hi @ntziolis 👋 Brandon offered Zak and I on Twitter to talk about About the component features, we discussed it with @zakhenry and it could be a great match for us. Unfortunately this API is not public and I read comments on Twitter saying that the Angular team was not sure to open this up for public use as it gives them flexibility internally but exposing it would limit the changes they could make to it... So pretty unsafe to use as of today IMO. I haven't taken a look to your demo yet but will do asap :) |
Great to know Brandon reached out already, From the session so far I feel they are just barely scraping the surface. I don't think reactive forms in "simple" is bad at all. Sure they could be type safe + make it even easier to create single field sub forms. But the main issues come up when forms get more complex and you wanne do proper multi field sub-forms. The other key missing piece is transformation which is especially important to us since we don't have control of the downstream systems (backend) in most of our projects. To give some context we do a lot of "digitization" projects for enterprises. Usually this either means:
Its not uncommon for a single form to have 100+ fields. In addition in all cases the form validation requirements are very complex, here is an actual sample:
This would be a pretty standard use case we have to deal with (sadly im not kidding). Sometimes we have dependencies between 20+ controls on different forms to make a decision on a specific form control. Given our project types our work is extremely forms heavy. I mean 90%+ of our work is building forms as auth, hosting, backend is handled by downstream systems and is out of our control. We have likely crossed the 2-3k forms mark by now for the last year alone. Maybe with the above it becomes a bit more clear why I'm desperately trying to figure out if we could make sub-forming work without loosing access to the underlying controls. I understand that our requirements are on the upper end of complex, but still hope that this could be made in a way that it doesn't add complexity for the simple use cases. Obviously I'm happy to participate in a call / witch session if you feel it would be helpful. Just lmk. |
You might want to take a look at Akita Forms Manager. |
@hakimio Thank you for the suggestion (might be super helpful to others who find this thread). We already use it heavily and it cannot be stressed how super helpful it is :) Sadly though there is no access to the individual form controls down the tree when using it together with
The from outside the sub-form really is the key piece here and for better or worst is our default use case. We could not use ngx-sub-forms, but we are in love with value transformations and the structure it imposes. Switching projects or onboarding new devs is a breeze (vs pain in the ass) since every form has the exact same structure. Hence the willingness to try out different paths to get the best of both worlds. |
That being said, native strongly typed forms and ivy-features will probably not land very soon as framework changes progress slowly. Just to add some feature request.
Im did not use ngx-sub-form lately, but I remember the countless times you helped me out @maxime1992 . Dont worry you two (+ @zakhenry ) about being inactive. Looking forward to |
Was sadly to busy until recently. I was able to make major progress and now only have 2 issues left that I'm confident I'll be able to resolve it this "sprint". Issue resolved:
What was changed:
Remaining issue are:
@maxime1992 @zakhenry You more than are welcome to review the currently pushed state. After I have resolved the last issues I'd love to have a chat with you to walk you through it in detail. You can then decide if this is something you wanne incorporate in to this lib or if I should separated it out in a new lib (my team has already played around with this extensively and it solves all the issues we were running into that I have outlined previously). |
One down one to go:
This means:
I have also started to clean up a bit. Will focus on getting
Le me know what you think on the error front. |
Hi @andreElrico 👋
We're conscious this is not ideal but as form should have tiny scopes it wasn't acutally so bad IMO but still trying to come up with something better :)!
Yes, I'm following some issues too and I've seen some comment from Kara :). Although types are not the biggest part of this tiny code base, I'd be glad to remove them if there's a good native support 🙌
Yes I doubt we're going to see that landing in the framework any time soon but 🤞
Not sure to understand what you mean here?
Could you be more precise?
😸 🙏 Hey @ntziolis 👋, thanks for putting so much effort into all this 🔥
Us too. We've had 1 or 2 sprint in which we managed to save a lot of bandwidth for ngx sub form rewrite but then had to move on before I got done with it. About the rewrite, I got pretty far and most of the e2e test are working but to get the errors correctly working without having an expression has changed error is a nightmare (as you seem to be aware ha). If you want to have a look into the progress and the rewrite you can here: https://github.com/maxime1992/ngx-sub-form/tree/feat/rewrite 👍
I feel your pain. This is one of the key point of ngx sub form. Deal with those nested structures that can easily end up with expression has changed errors so that people don't have to deal with them in their code base 🔥 😄 💪!
The library is using ng9, do you think the new (but private 😞) function
Yeah I'd be happy to hear more about what you built as I've not been able to find some free time to dig into it yet! Don't know when we can do that but I've created a Discord server for ngx-sub-form so that we can easily jump into a visio conf when we feel like it :) Feel free to join here and we'll try to figure out a good time to chat: https://discord.gg/wNFg7ab
Good luck! |
This is a major architecture change which is brought without any breaking change 😄! We've split up the code base in 2: Old one and new one. The old one hasn't moved at all but is now deprecated (not removed yet!). You can keep using the old one for a bit and have a smooth/incremental update to use the new API. Few changes that you have to note with the new API: - Only works with Angular 9 or more - The app needs to have Ivy activated (this is because we use `ɵmarkDirty` internally. If it ever gets removed we'll probably have to ask to provide the `ChangeDetectorRef` but we were able to around this for now!) - We got rid of inheritance 🙌 - Form errors on a FormArray are now an object instead of an array. Previously the array contained null values on all the fields without any error. It's now an object containing only the ones with errors and you can access them using the index Please start upgrading to the new API as soon as possible as we stop supporting the old API as of today and will remove it in a near release. This closes #171 for the major architectural changes and also the following issues as a result: - closes #82 - closes #86 - closes #93 - closes #133 - closes #143 - closes #144 - closes #149 - closes #160 - closes #168
Hello 🌞 @zakhenry and I found some time during the weekend to continue a bit on the rewrite and I believe we reached a state where we can raise a public PR and let anyone have a look to the implementation and the new pubilc API 🎉. The PR is here: #176 We've duplicated our demo app to have both the old one and the new one (same but using the new API) and our E2E tests have been updated too to run on both apps: It looks pretty promising but maybe some cases are not handled by our E2E tests so we'll need a solid help for manual testing and everyone can help by giving a go at the new version 🙌. Few things are still breaking changes at the moment but we'll do our best to make sure we have the old and the new version coexisting for a little bit so that people can have a smooth upgrade instead of a painful, "big bang" one. As I said, still a WIP but we'd love to have some feedback onto it! This wouldn't solve all the issues... But would still solve the following ones: Currently the only way to give it a go is by cloning the repo, checking out the rewrite branch and building it. We understand it is pretty painful and we'll try to have a pre-release setup on that branch to make this easier for everyone who wants to help testing it.
The best way to start would be to have a look on the PR #176 and share your thoughts then look into the PR within our demo code to see how to use the new API. You could then give it a go on your side on some forms 👍 Let us know what think, please don't be shy 😸 ! |
Any ETA for these changes? |
ETA:
I'm not 💯% sure of that yet but I think that as soon as we've got some feedback and if the API looks good, we may merge into master and just provide 2 different paths to import from. The regular one and maybe a new one like |
Update: I've spent some time this week end to:
The split is done ✔️ but unfortunately I hit an error when I try to make a pre release. |
🎉 This issue has been resolved in version 5.2.0-feat-rewrite.1 🎉 The release is available on: Your semantic-release bot 📦🚀 |
Wouhouuu it worked! 🎉 If anyone wants to try this out, Haven't tried it myself yet as it's a bit late but... 😬 🤞 I'm going to close #176 in favor of #188 which is the same of except that I renamed the branch to go around the publishing error with the not supported format for the branch |
Hello 👋! 📢 We've got some important updates to share! 📢 😄 Some work has been done over the weekend on the refactor to make sure everything is working fine. So we've upgraded our As the update can be incremental, we haven't committed yet to transform 100% of our forms. BUT. We did update a part of our app that contains a lot of root and sub forms. The diff before/after when searching for The idea behind giving this an early try is to:
Guess what? We're glad we did it because we caught quite a lot of issues, missing features and we learnt a lot about the process of upgrading an existing code base! Our internal E2E tests on our app got us covered and caught a lot of regressions which we were able to identify and fix one by one (note the bump from v5.2.0-feat-rewrite.1 to v5.2.0-feat-rewrite.6 in 2 days 😂). But the good news is: Our internal codebase is now running on v5.2.0-feat-rewrite.6 and should go in prod pretty soon 👀. What's coming next?
As things are looking pretty good but not ready to be released yet, I'll try to draft up a guide that'll reuse later on in the release note on how to migrate so that if anyone from the community feels brave enough to give a go to the new version, we'd love to hear some feedback onto it 😸! I don't think the API on the new part is going to change a lot but keep in mind that those are just pre releases and we may modify slightly the API so if you're willing to maybe give it a go on a small part of your code base but if you're using ngx-sub-form a lot don't update everything just yet. We'll be in touch soon 👋 |
🔊 NEED INFO 🔊 Who's using We do expose that method so that automatic root forms can be debounced for example: protected handleEmissionRate(): (obs$: Observable<FormInterface>) => Observable<FormInterface> {
return NGX_SUB_FORM_HANDLE_VALUE_CHANGES_RATE_STRATEGIES.debounce(300);
} But this method is exposing the final observable (that is going to be sent to the parent through the public form = createForm<ToolHolderFilter>(this, {
formType: FormType.ROOT,
// ...
handleEmissionRate: NGX_SUB_FORM_HANDLE_VALUE_CHANGES_RATE_STRATEGIES.debounce(300),
}); I'm wondering: Who's using this hook with something else than a debounce? Could we simply turn that into public form = createForm<ToolHolderFilter>(this, {
formType: FormType.ROOT,
// ...
emissionRateDebounce: 300
}); ❓ We've never used it for anything else different than a debounce on our side but wondering if we're missing something where it could come in handy to have a different operator? |
This is a major architecture change which is brought without any breaking change 😄! We've split up the code base in 2: Old one and new one. The old one hasn't moved at all but is now deprecated (not removed yet!). You can keep using the old one for a bit and have a smooth/incremental update to use the new API. Few changes that you have to note with the new API: - Only works with Angular 9 or more - The app needs to have Ivy activated (this is because we use `ɵmarkDirty` internally. If it ever gets removed we'll probably have to ask to provide the `ChangeDetectorRef` but we were able to around this for now!) - We got rid of inheritance 🙌 - Form errors on a FormArray are now an object instead of an array. Previously the array contained null values on all the fields without any error. It's now an object containing only the ones with errors and you can access them using the index Please start upgrading to the new API as soon as possible as we stop supporting the old API as of today and will remove it in a near release. This closes #171 for the major architectural changes and also the following issues as a result: - closes #82 - closes #86 - closes #93 - closes #133 - closes #143 - closes #144 - closes #149 - closes #160 - closes #168
Hello, thank you very much for the library, in some of our projects in Cotalker we implemented a lot of boilerplate similar to that of ngx-sub-forms to be able to build "subforms" in the cleanest way possible. Some days ago we started using ngx-sub-forms and it was a good experience until we came across issue #93 , then we noticed that it had fixed it in version 5.2.0-feat-rewrite.1 and we thought OK let's install the version 5.2.0-feat-rewrite.8 which should be the most appropriate before breaking changes. We did all the necessary refactors but when trying to use 5.2.0-feat-rewrite.8 the angular builder threw us the following error: ERROR in The target entry-point "ngx-sub-form" has missing dependencies: So we thought, OK maybe it is more appropriate to use the latest version of rewrite (6.0.0-feat-rewrite.5)? For this reason, before continuing to implement code, I would like to ask you what is your view on this. Say, from what version should we start using ngx-sub-form? We wouldn't want to have to deal with the aforementioned 5.1.2 bugs or have to refactor our code when you release 6.X.X. The library's new approach in "feat-rewrite" branch that relies on composition rather than inheritance looks great. Thank you very much for the tremendous work you do. |
Hi @agallardol thanks for the kind words and happy to see you starting using ngx-sub-form! There's a comment here: #188 (review) where indeed this was reported and we haven't fixed this yet. In the meantime you can simply add those packages directly as a quick fix with npm or yarn and you'll be fine. About the new published versions
Now, if you feel adventurous and you're happy to help us test out the pre release I'd definitely recommend to be on latest We've migrated one of the most important bits of our internal app and containing a lot of (ngx-sub-form) forms a month ago or so. We've discovered issues that have been fixed and we're fairly happy with it so far. But once again, this is a pre release so if you see anything going wrong please report here :). On the documentation and migration topic, we've started to work on the documentation to help people migrate to the new version asap. The doc is not ready yet even as a draft but we're working onto it. In the meantime, your best bet is to simply look at our examples here: https://github.com/cloudnc/ngx-sub-form/tree/feat-rewrite/src/app/main-rewrite We've copied the demo app ( If you're missing some info from those examples, feel free to ping here too while the documentation isn't ready and don't be afraid to share some feedback on the new API 😄!
Much appreciated by @zakhenry and myself! Thanks 🙏 |
Hey, I was feeling adventurous and decided to try the latest published version: Hower, I do have 1 question: Like @agallardol also mentioned, I was also taken by surprise that I had to install 2 additonal packages, that I did not need to install before: Cheers! |
😸 👏!
Awesome, thanks for letting us know!
Oh yep we've probably just forgotten to add them as peer dependencies so they auto install 🤐 Will do.
If you start using the new API everywhere and migrate your existing forms to it let us know more along the way if it's smooth, if you encounter any issue etc. May help us write some better migration notes :) |
Hi @maxime1992, Is this project still under active development? |
Hello @Waterstraal. I can't say it's active I'm afraid. The refactor has been going for over a year without being merged to master. That said. We do use ngx-sub-form regularly in our codebase at work and maintain the library. But mostly based on our own planning when we need things. It means that the beta branch and release are still quite active, see #188 What's left before we can merge the beta branch into master is:
Assuming you're already familiar with ngx-sub-form API, you probably don't need any documentation to start using the beta version (available on npm). You can just take a look here: https://github.com/cloudnc/ngx-sub-form/tree/feat-rewrite/src/app and compare the 2 folders Hopefully at some point we find some motivation to update at least the documentation. I think I'll have a go soon at upgrading for ng 13 though so that people using ngx-sub-form aren't stuck and can at least use the beta branch with their project. Note: Even if it's called beta it's stable now and we don't plan on introducing any further breaking change I think. |
@Waterstraal I've raised a MR to add support for Angular 13 and avoid the ngcc step for Note: This MR targets the |
Alright, I've tried to find some time... and strength to rewrite the README to explain what's ngx-sub-form, how to migrate to the new api if you've been using the old one and also explain all the different principles for the lib. Meaning, we should now be close to a state where we'll only be missing some unit tests. I think we should be good to release on master because the old API is still here and nothing will be broken by default but people should be able to start using and/or migrating to the new one. For anyone interested, please have a look here: #231 Probably not perfect but I hope it'll be at least a good start. I've been too head down into this to actually realize whether its any good or not and no one new to the project would understand what I wrote. Don't be shy and let a comment directly on the MR to let me know what you think, or even raise a MR targeting mine if you think you can improve it. |
👍 sounds good! I'll try to have a look next week 👏 |
This is a major architecture change which is brought without any breaking change 😄! We've split up the code base in 2: Old one and new one. The old one hasn't moved at all but is now deprecated (not removed yet!). You can keep using the old one for a bit and have a smooth/incremental update to use the new API. Few changes that you have to note with the new API: - Only works with Angular 9 or more - The app needs to have Ivy activated (this is because we use `ɵmarkDirty` internally. If it ever gets removed we'll probably have to ask to provide the `ChangeDetectorRef` but we were able to around this for now!) - We got rid of inheritance 🙌 - Form errors on a FormArray are now an object instead of an array. Previously the array contained null values on all the fields without any error. It's now an object containing only the ones with errors and you can access them using the index Please start upgrading to the new API as soon as possible as we stop supporting the old API as of today and will remove it in a near release. This closes #171 for the major architectural changes and also the following issues as a result: - closes #82 - closes #86 - closes #93 - closes #133 - closes #143 - closes #144 - closes #149 - closes #160 - closes #168
Good evening everyone 👋 Looks like after a year and a half... We're finally merging this 🎉 Feel free to give us some feedback how the new API is working out for you. Hope you enjoy the bug fixes and the switch from inheritance to a function Thanks to everyone who participated in this thread to give feedback and ideas 👏 and a big thanks for all your patience as well 🙏! |
🎉 This issue has been resolved in version 5.2.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
Hello 👋
What's this all about?
I'd like to share a little update on ngx-sub-form on behalf of @zakhenry and myself as we've been pretty quiet for a while. We've had some work at CloudNC we needed to focus on and with the Covid-19 coming in between, we've all had to adapt. So if you've commented on an issue, made a PR or made any kind of interaction and haven't had any answer don't take it badly. We still care a lot about ngx-sub-form and we'll try to get back to you asap 😸.
Better inclusion of ngx-sub-form into our planning (at CloudNC)
@zakhenry and I have been trying to build a dependency graph of all the issues, order and prioritize them in order to start including some of them as part of our work time (during our sprints 🙌). We hope to tackle some tech debt on ngx-sub-form pretty soon 💪.
New architecture
I spent a whole day thinking about all the issues, how they connect to each others, how to solve one without adding unwanted behavior, etc. The following lead me to think that we need to rework on the architecture of the project and make major changes.
From what I've found, concepts will remain the sames but:
Changes
Let's start with a rough diagram of the new internal data flow. Please don't focus too much on this yet, I'll refer to it point by point explaining what's new and what it'll bring:
the image has a good quality, if it's not big enough open it in its own tab
Creating a sub/remap/root form component
First big change: Lets get rid of inheritance 👍.
Here's how a basic sub form would look like with the new API:
Related issue:
Stop using internally
{ emitEvent: false }
every time we interact with the public form groupInternally the biggest issue we face is how to apply changes to our form group when required by the parent (through
writeValue
or evensetDisabledState
for example) without broadcasting those values straight up to the parent.When the value of the model changes upstream, we want to put it into the form group, wait for the user to update the form, and for every subsequent changes broadcast the value up. In order to achieve this, we previously used
{ emitEvent: false }
:ngx-sub-form/projects/ngx-sub-form/src/lib/ngx-sub-form.component.ts
Lines 108 to 110 in 00aea19
ngx-sub-form/projects/ngx-sub-form/src/lib/ngx-sub-form.component.ts
Lines 118 to 119 in 00aea19
ngx-sub-form/projects/ngx-sub-form/src/lib/ngx-sub-form.component.ts
Lines 245 to 250 in 00aea19
ngx-sub-form/projects/ngx-sub-form/src/lib/ngx-sub-form.component.ts
Lines 271 to 273 in 00aea19
ngx-sub-form/projects/ngx-sub-form/src/lib/ngx-sub-form.component.ts
Lines 422 to 426 in 00aea19
This way, the changes would be reflected on the form but our internal subscription to
formGroup.valueChanges
wouldn't be triggered straight away whenwriteValue
is called.Unfortunately, this led to some (annoying) issues:
How is the upgrade going to work?
We'll try to make the upgrade as smooth as possible by deprecating the old way of using
ngx-sub-form
through classes and expose the new functions once they're ready. This should let you do an incremental update if you've got a lot of components usingngx-sub-form
. (and don't worry, we have ~120 components which extends Ngx*FormComponent so we'll have to go through that ourselves 😅!)We'll create a
next
branch were we'll be able to make pre-releases on CI so that we can thoroughly test internally that everything is fine before publishing it for good 👍 and ask for some help from the community to see if everything is fine for everyone!The first target will be to reach features parity. Once we reach that objective we should be able to cut a release (a feature release, not a breaking change 👌). From there, already quite a few issues should be solved and we should be able to move on to new issues.
How can you help?
You've been using
ngx-sub-form
in your project(s)?(Please let us know here Who's using ngx-sub-form? #112 😸)
You have ideas that we should take into account during the rewrite?
You're keen to help for review once the PR is out?
Have anything interesting to share?
Please comment directly on this issue so that we can all end up with a good way of working with our forms 😃!
Following is just the Excalidraw backup for the schema
ngx-sub-form-new-architecture.zip
The text was updated successfully, but these errors were encountered: