Skip to content

Two-way binding documentation is missing important information #71796

Open

Description

@bart113

Describe the problem that you experienced

When it comes to two-way binding (using the model signal), arguably the most important piece of information is that a value = model<string>(); declared in a child component can be used in the parent's template as either:

  1. Banana-in-a-box: [(value)]="someValue"
  2. A pair of input and output: [value]="someValue" (valueChange)="onSomeValueChanged($event)"

And in the second case, we can additionally assume that whenever someValue changes in the parent component, and gets passed to child, onSomeValueChanged() will not immediately be called back on the parent component - which is critical for the "Data Down, Actions Up (DDAU)" / "unidirectional data flow" principle.


Unfortunately, learning this from the Angular documentation at https://angular.dev/ is not easy. The following links contain just small pieces of this puzzle:

And even putting them all together doesn't fully convey the message described above.

Can we please update the documentation to describe the message from the top of this ticket, in a single place, in a brief way, with a good, illustrative example? (preferably instead of some of the existing content, which is rather unhelpful)

Enter the URL of the topic with the problem

https://angular.dev/guide/templates/two-way-binding

Describe what you were looking for in the documentation

I was trying to teach a colleague how to use a two-way binding, and was looking for good documentation.

Describe the actions that led you to experience the problem

No response

Describe what you want to experience that would fix the problem

No response

Add a screenshot if that helps illustrate the problem

No response

If this problem caused an exception or error, please paste it here


If the problem is browser-specific, please specify the device, OS, browser, and version


Provide any additional information here in as much as detail as you can


Activity

  1. added this to the needsTriage milestone on Nov 3, 2026
  2. added this to the needsTriage milestone on Nov 3, 2026
  3. JeanMeche commented on Nov 3, 2026

    @JeanMeche
    Member

    Let me challenge you a bit on this.

    The 2-way binding guide does mention

    Two way binding is a shorthand to simultaneously bind a value into an element, while also giving that element the ability to propagate changes back through this binding.

    This should imho is enough to infer everything. Don't you agree?

  4. bart113 commented on Nov 4, 2026

    @bart113
    Author

    The 2-way binding guide does mention

    Two way binding is a shorthand to simultaneously bind a value into an element, while also giving that element the ability to propagate changes back through this binding.

    This should imho is enough to infer everything. Don't you agree?

    The statements "bind a value into an element" and "propagate changes back through this binding" are vague, and do not convey the precise information described at the top of this ticket. It may be a decent one-sentence introduction into this topic, but it's not a sufficient explanation of the entire idea and its key details.

    I know plenty of people with years of Angular experience, who do not know these things. So I guess we, as the Angular community, are not doing enough to share this information. Putting it in the documentation would be a step in the right direction.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: docsRelated to the documentation

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions