But we run into a whole other story when we try to do two way data binding using the [()] (banana-in-a-box-syntax):

To declare a two way data binding property we need:

1 extra property

1 extra Output decorator

a naming convention (property name + ‘Change’)

remembering to call emit each time you want to change the property

Although I appreciate the amount of control this gives us, it can fill the code base with random bugs just because we forget to call the emit function sometimes.

Might even be to discourage developers from using the feature.

But if you have to do this for 3–4 properties, all of those concerns for errors multiply, so it is not sustainable if you really want to use the feature.