Giter Club home page Giter Club logo

Comments (4)

arobinson avatar arobinson commented on April 30, 2024

Using a transform callback on input may be helpful to address this issue to replace ngOnChanges/setter functionality, though that probably isn't the expected usage. The place this wouldn't work at the moment is the model() lacks a transform callback. Not sure if that is intentional, but it would be nice. For example, allow someone passing null or undefined to a model and convert the internal value to a default value.

This would mostly address the current functionality of setter and ngOnChanges using signals:

this.modelAttribute = model<string>('', { onChange: () => { ... });
this.inputAttribute = model<string>('', { onChange: () => { ... });

from angular.

atscott avatar atscott commented on April 30, 2024

In my prototyping, I have been trying to achieve signal based components and directives with no Angular lifecycle methods (ngOnChanges, ngOnInit, etc.).
I am not seeing a way without using ngOnInit

ngOnInit is not planned to go away in signal-based components. Does that resolve the issue for you?

From the RFC:

signal components have ngOnInit and ngOnDestroy only, and other hooks replaced by signal functionality.

from angular.

arobinson avatar arobinson commented on April 30, 2024

it would solve the initial invocation, but I guess the question is if computed() values would be re-computed if the values change but no one re-invokes computed to get a new values? Does it recompute when things change or only when the value is requested. I'm presuming it would be the latter? So that would work for the initial value, but it would lack the ngOnChanges equivalent functionality.

effect would work if it would be invoked before children components have their lifecycle handled

from angular.

arobinson avatar arobinson commented on April 30, 2024

Related question, would it be expected to use effect to implement structural directives or respond to inputs changing in any directive since directives have no templates to trigger the evaluation of something like a computed?

Running example: https://stackblitz.com/edit/stackblitz-starters-ndpvkk?file=src%2Fapp%2Fif-string.directive.ts

From the documentation, it seems like effect is really more for side-effects, but in a structural directive, there is no template that would cause the evaluation of a computed or other lifecycle methods that would trigger. This seems like a case where effect is required in order to go zoneless / with only signals. Is this the best practice? In the documentation, using them for directives or anything similar is not listed as a use case

The IfNumberDirective shows that computed will not work without the usage of ngOnChanges.

from angular.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.