¹Ø¼üµã
AngularÊÇÓûùÓÚÄ£¿éµÄÓ¦ÓóÌÐò¼Ü¹¹¹¹½¨µÄ£¬ËùÒÔÊÇÓпÉÄÜÔÚÄ£¿éÖ®¼ä´«ÊäÊý¾ÝµÄ£»
Äã¿ÉÒÔͨ¹ý@Input()°ÑÊý¾Ý´«Èë×ÓÄ£¿é£»
Äã¿ÉÒÔͨ¹ý@Output()´Ó×ÓÄ£¿é²¶»ñÊý¾Ý£»
Ëæ×ÅÓ¦ÓóÌÐòµÄ·¢Õ¹£¬¸¸×ÓÄ£¿éÖ®¼äµÄͨÐÅ»áÔ½À´Ô½À§ÄÑ£»
Äã¿ÉÒÔͨ¹ýngrxÖ®ÀàµÄ·½·¨ÓÃÍⲿÊý¾Ý¿âÀ´¹¹½¨´ó¹æÄ£Ó¦ÓóÌÐò£»
Ä£¿éÊÇAngularµÄ¹¹½¨µ¥Ôª£¬AngularÓ¦ÓóÌÐòµÄËùÓпÉÊÓ»¯ÔªËØÒ²ÊÇÓÉÄ£¿é¹¹½¨µÄ¡£»ùÓÚÄ£¿éµÄ¼Ü¹¹µÄÒ»¸öÖØ´óºÃ´¦ÔÚÓÚ£¬ÓëJavaScriptº¯Êý·Ç³£ÏàÏñ£¬Èç¹ûÒ»¿é´úÂë±äµÃ¹ýÓÚ¸´ÔÓ£¬»òÕ߳е£Á˹ý¶àÔðÈΣ¬Äã¾Í¿ÉÒÔ°ÑËü´òÉ¢£¬ÈÃÿһ¶Î´úÂë¶¼Ö»×öÒ»¼þÊ¡£
Ò²¾ÍÊÇ˵£¬µ±ÎÒÃǰÑÄ£¿é²ðÉ¢³É¸üСµÄÄ£¿éʱ£¬ÎÒÃǾÍҪȷ±£ËüÃÇ¿ÉÒÔ°ÑÊý¾Ý´«À´´«È¥¡£µ½ÄÇʱºò£¬Ç¡µ±µØÄ£¿é¼äͨÐÅ»úÖÆ¾Í³ÉÁËÎÒÃÇÓ¦ÓóÌÐòµÄ»ù´¡£¬¿ÉÒÔÈÃËùÓеÄÊý¾Ý¶¼±£³Öͬ²½×´Ì¬¡£ÐÒÔ˵ÄÊÇ£¬Angular¸øÎÒÃÇÌṩÁËÕâÑùµÄ¹¤¾ßÀ´Íê³ÉÕâ¼þÊ¡£

ÈçÉÏͼËùʾ£¬ÎÒÃÇ¿ÉÒÔÔÚAppComponent֮Ϲ¹½¨Õû¸öÓ¦ÓóÌÐò£¬µ«ÕâÑù×ö»áÈÃÄǸöÄ£¿é³Ðµ£¹ý¶àµÄÔðÈΡ£ÔÚ»ùÓÚÄ£¿éµÄ¼Ü¹¹À´ó¼Ò¹«ÈϱȽϺõÄʵ¼ùÊǰÑÄ£¿é²ðÉ¢£¬ºÃÈÃËüÃǶ¼Ö»³Ðµ£µ¥Ò»µÄÔðÈΡ£
½«Êý¾Ý´«¸øÄ£¿é
ÔÚAngularÖУ¬µ±Ò»¸ö¸¸Ä£¿éÒª°ÑÊý¾Ý´«Èë×ÓÄ£¿éÖÐʱ£¬ÎÒÃÇ¿ÉÒÔʹÓÃ@Input¡£¼ÙÉèÎÒÃÇÏÖÔÚÒª¹¹½¨Ò»¸ö³ÌÐò£¬ÔÚÒ³ÃæÉÏÏÔʾÆÀÂÛ¡£AppComment½«¸ºÔð¼ÓÔØËùÓÐµÄÆÀÂÛÄÚÈÝ£¬ÎÒÃÇ»á°ÑÿÌõÆÀÂÛÊý¾Ý¶¼·¢Ë͸øÆÀÂÛÄ£¿é¡£
ÎÒÃǽ«µ÷Óãº
°ÑÒ»¸öcomment²ÎÊý´«Èë×ÓÄ£¿é¡£ÏÂÃæ¾ÍÊÇÕû¿éÄ£¿é´úÂëµÄÑù×Ó£º
@Component({ selector: 'comment', templateUrl: './comment.component.html', styleUrls: ['./comment.component.css'] }) export class CommentComponent { @Input() comment; |
ÏÖÔÚÎÒÃÇ¿ÉÒÔ´ÓÎÒÃÇ´úÂëÆäËü²¿·Öµ÷ÓÃÕâ¸öÄ£¿é£¬²¢°ÑËüÐèÒªµÄÊý¾Ý´«ÈëÕâ¸öÄ£¿éÁË¡£Õâ¿é´úÂë¿´ÆðÀ´»áÏñÕâÑù£º
<comment [comment]="comment"></comment> |
Àí½âÓï·¨
Ê×ÏÈ£¬ÎÒÃÇÓÐÒ»¸öÄ£¿éÑ¡ÔñÆ÷£º
Èç¹ûÄãÒÔǰÓùýAngular£¬Õâ¸öÓï·¨¿´ÆðÀ´Ó¦¸ÃÊǺÜÊìϤµÄ¡£
Æä´ÎÊÇÊôÐ԰󶨣º[comment]¡£Õâ°ÑÎÒÃÇÔªËØµÄÊôÐÔÀ¨ÆðÀ´µÄÖÐÀ¨ºÅµÚÒ»ÑÛ¿´ÉÏÈ¥ËÆºõÓÐЩÁîÈ˷ѽ⡣ÊÂʵÉÏ£¬²¢²»ÐèÒªËüÃÇÀ´°ï×ŰÑÊý¾Ý´«µ½¸÷¸öÄ£¿éÖУ¬µ«Ã»ÓÐËüÃÇ£¬ÎÒÃǾÍÖ»ÄܰÑÒ»¸öÆÕͨµÄÎı¾×Ö·û´®´«ÈëÄ£¿éµÄ@Input()¡£ÖÐÀ¨ºÅ¿ÉÒÔ¸æËßAngular£¬ÕâÊÇÒ»¸öÊôÐÔ°ó¶¨ÒÔ¼°´«¸øÕâ¸ö±äÁ¿µÄÖµ£¬ËùÒÔÕâÑù¾Í¿ÉÒ԰Ѷ¯Ì¬Êý¾ÝÖµ²åÈ룬´«¸ø¸÷Ä£¿é£¬¶ø²»Ö»ÊÇ´«¹ýÈ¥Ò»¸ö×Ö·û´®ÁË¡£
×îºó£¬ÎÒÃÇÔÚ¡°comment¡±µÄÊôÐÔ°ó¶¨Ö®ºóÓÐÁËÊôÐÔµÄÖµ¡£ÕâÒ»¿é¾ÍÊǸæËßAngularҪעÒâÕâ¸ö¡°comment¡±ÊôÐÔ£¬²¢ÇÒ°ÑËü´«¸øÎÒÃÇµÄÆÀÂÛÄ£¿é¡£
½«¸ÅÄî×éºÏÆðÀ´
ΪÁËÏñÎÒÃÇÔÚÉÏͼÖÐËùÏÔʾµØÕ¹Ê¾Ò»¸öÆÀÂÛµÄÁÐ±í£¬ÎÒÃÇ¿ÉÒÔ°ÑÐí¶àAngular¸ÅÄî×éºÏÆðÀ´£¬°üÀ¨*ngFor¡£ÔÛÃǼÙÉèÎÒÃÇ¿ÉÒÔÓÃÒ»¸öÃûΪthis.commentsµÄÊôÐԵķ½Ê½°ÑÆÀÂÛÊý¾Ý×÷ΪÎÒÃÇÄ£¿éÀàµÄÒ»²¿·Öµ¼Èë¡£
<comment *ngFor="let comment of comments" [comment]="comment"></comment> |
×îÖÕ½á¹û¿´ÆðÀ´ÏñÊÇÕâÑùµÄ£º

ʹÓÃÆÀÂÛÄ£¿éµÄÆÀÂÛÁбí
²¶»ñ×ÓÄ£¿éʼþ
µ±ÎÒÃÇÖªµÀÁ˸ÃÈçºÎ°ÑÊý¾Ý´«ÈëÆÀÂÛÄ£¿éÖ®ºó£¬ÄǸÃÔõÑù°ÑÒ»¸öÄ£¿éɾµô£¬²¢Òò´Ë´ÓÁбíÖÐÏûÊ§ÄØ£¿Õâ¸ö¿´ÆðÀ´¾ÍÓÐЩ¹îÒ죬ÒòΪÊý¾ÝÊDZ£´æÔÚÆÀÂÛÄ£¿éµÄ¸¸Ä£¿é¡ª¡ªAppComponentÖ®Öеġ£
½â¾öÕâ¸öÎÊÌâµÄ°ì·¨¾ÍÊǵ÷ÓÃÃûΪ@Output()µÄ·½·¨£¬Ëü¿ÉÒÔÀûÓÃEventEmitter£¬ÈÃ×ÓÄ£¿é·¢Éä³ö¸¸Ä£¿é¿ÉÒÔ²¶»ñµÄʼþ¡£
ÈÃ×ÓÄ£¿é¿ÉÒÔÓ븸ģ¿éͨÐŵĵÚÒ»²½¾ÍÊÇÓÃ@Output()ÃèÊö·û¸øÎÒÃǵÄÄ£¿é¼ÓÉÏÒ»¸öеÄÀàÊôÐÔ¡£
@Component({ selector: 'comment', templateUrl: './comment.component.html' }) export class CommentComponent {
@Input() private comment;
@Output() private onDelete = new EventEmitter();
deleteComment() {
this.onDelete.emit(this.comment);
}
} |
ÔÚÕâ¸öCommentComponentµÄ´úÂëÀÎÒÃÇ¿ÉÒÔÔÚdelete°´Å¥±»°´ÏÂʱµ÷ÓÃdeleteComment()·½·¨£¬ÈÃÎÒÃÇ¿ÉÒÔ²¶»ñÕâЩ´Ó¸¸Ä£¿é·¢¹ýÀ´µÄʼþ¡£
<button (click)="deleteComment()">Delete</button> |
´Ó¸¸Ä£¿éÖв¶»ñʼþ
ÔÚAppComponentÖУ¬ÎÒÃÇÐèÒªÓиöз½·¨À´´¦Àíɾ³ýÆÀÂÛµÄÐÐΪ¡£Õâ¸ö·½·¨»áÊÕµ½£º
@Component({ selector: 'app-root', templateUrl: './app.component.html' }) export class AppComponent {
/**[code omitted]**/
onCommentDelete(comment) {
// logic to remove comment from comments array
}
} |
ÔÚÎÒÃǵÄÊÓͼÖУ¬ÎÒÃÇÖ»ÐèÒª¸æËßAngularµ±onDeleteʼþ±»´¥·¢Ê±£¬Òªµ÷ÓÃonCommentDelete()·½·¨¡£
<comment *ngFor="let comment of comments" [comment]="comment" (onDelete)="onCommentDelete($event)"></comment> |
µ±ÎÒÃǵÄɾ³ý¹¦ÄܾÍÐ÷Ö®ºóÎÒÃǵijÌÐò¿´ÆðÀ´ÊÇÕâÑùµÄ£º

ÏÖÔÚÓÐÁËAngularµÄ@Output()ÃèÊö·û£¬ÎÒÃǾͿÉÒÔɾ³ýÆÀÂÛÁË¡£
»¹ÓÐÁíÍâÒ»ÖÖ»ñÈ¡Êý¾ÝµÄ·½·¨
µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÃÇ»¹Ö»ÌÖÂÛÁ˸¸-×ÓÄ£¿éÖ®¼ä½øÐÐÄ£¿éͨÐŵķ½·¨¡£¾¡¹ÜÏÖÔÚÕâÖÖͨÐÅ·½·¨ÒѾ¿ÉÒÔÂú×ã´ó¶àÊýÈ˵ÄÐèÇ󣬵«Ëæ×ÅÓ¦ÓóÌÐò¹æÄ£µÄÔö³¤£¬¼ÌÐøÎ¬»¤¸¸×Ó֮ģ¿é¼äµÄÊý¾ÝͨÐÅģʽ¾Í»áÔ½À´Ô½À§ÄÑ¡£¶ÔÓÚ´óÐͳÌÐòÀ´Ëµ£¬ÓÃÊý¾Ý¿âÀ´¼õÇáµ¥¸öÄ£¿éµÄ¹¤×÷Á¿µÄ·½·¨Í¨³£¶¼ÊÇÓÐЧµÄ¡£Êý¾Ý¿â¿ÉÒÔ×öΪÖÐÐÄ´æ´¢£¬ÔÚÐèҪʱ¿ÉÒÔ±»Ó¦ÓóÌÐòµÄ¸÷¸öµ¥¶ÀÄ£¿éµ÷Óᣵ¥¸öÄ£¿é¿ÉÒÔÖ±½ÓÁ¬ÉÏÊý¾Ý¿â£¬Ö»Ê¹ÓÃËüÃÇËùÐèÒªµÄÄÇÒ»²¿·ÖÊý¾Ý£¬¶ø²»ÊǰÑÊý¾ÝÊÖ¶¯µØË³Ðò°´×ÓÄ£¿éÁ´²»¶Ï´«ÏÂÈ¥£¬´Ó¶ø¼õÇáÁ˸¸Ä£¿éºÍ×ÓÄ£¿éËù³Ðµ£µÄ°ÑÊý¾Ý´«À´´«È¥µÄÔðÈΡ£
Èç¹ûÄãÊìϤReact£¬¾Í»áÖªµÀÕâÕýÊÇReduxÒª½â¾öµÄÎÊÌâ¡£¿ÉÊÇÓÐÁËAngular£¬ÎÒÃǾÍÓÐÁËÁíÒ»¸ö¿ÉÓõÄÃûΪngrxµÄ¿â£¬¶øÕâÇ¡ºÃÊÇÊÜReduxÆô·¢¶ø³ÉµÄ¡£ÔÚÕâÁ½¸ö¿âÖ®¼äÓÐЩ¹Ø¼ü²»Í¬£ºÀàÐͺ͹۲âÖµ¡£ngrx¿â¶ÔTypeScriptÉú̬ϵͳµÄÒÀÀµ·Ç³£ÖØ£¬ËùÒÔ»á±ÈRedux¸ü¼Ó·±Èߣ¬µ«È´Èõ÷ÊԺ͵÷²éÎÊÌâ±äµÃ¸üÈÝÒס£
ÔÚÓÃngrxʱ£¬ÎÒÃǵÄ״̬ÊÇÒ»¸öµ¥¶À²»±äµÄÊý¾Ý½á¹¹¡£ÎªÁËÈÃÎÒÃǵÄ״̬¿É±ä£¬ÎÒÃÇ¿ÉÒÔÓÃÐÐΪµÄ·½Ê½À´µ÷Óú¯Êý¡£·´Ö®£¬ÕâЩÐÐΪ¿ÉÒÔ¸æËßÎÒÃǵÄÓɵ¥´¿µÄº¯Êý×é³ÉµÄ´¦ÀíÂß¼£¬ÄÄÒ»¿éµÄ״̬ÊǿɱäµÄ¡£ÕâÑù£¬ÎÒÃǵÄÓ¦ÓóÌÐò¾Í¿ÉÒÔÓÐ״̬µÄа汾Êý¾ÝÁË£¬¶øÄÇЩ¹Ø×¢ÕâЩÊý¾ÝµÄÄ£¿é¾Í¿ÉÒÔÂíÉÏÊÕµ½ÐÂÊý¾Ý¡£µ±ÕâЩģ¿éÊÕµ½ÐÂÊý¾ÝÖ®ºó£¬ËüÃǻᱻ×Ô¶¯ÖØÐÂչʾ£¬ÈÃÎÒÃǵÄÊÓͼʼÖÕÓëÊý¾Ý¿âÖеÄÊý¾Ý±£³ÖÒ»Ö¡£
Õâ¶ÔÓÚ¿ª·¢ÓÖÒâζ×Åʲô£¿
Õâ´Ó¸ÅÄîÉϱíÃ÷£¬ÊÇÓпÉÄÜ´ÓϵͳÍⲿ°ÑÊý¾ÝÖ±½Ó´«¸øÄ³¸öÄ£¿é£¬¶ø²»±ØÍ¨¹ý¸¸×Ó¹ØÏµµÄ£¬ÕâÔÚÊÂʵÉ϶ÔÓÚ¿ª·¢À´ËµÒâζ×ÅÊ²Ã´ÄØ£¿

Èç¹ûÎÒÃÇÏëÔÚÁ½¸ö²»Í¬µÄµØ·½ÏÔʾÆÀÂÛµÄÌõÊýÄØ£¿½ö½öÒÀ¿¿Ä£¿éµÄ²ã¼¶¼Ü¹¹ÊǺÜÄÑʵÏֵģ¬ÕâÖÖÇé¿öÏÂʹÓÃngrxµÄÖÐÐÄ´æ´¢¾ÍºÜÓÐЧÁË¡£
ÔڽϴóµÄ³ÌÐòÄÚ²¿£¬°ÑÊý¾ÝÖ±½Ó´«¸øÄ³¸öÄ£¿é¿ÉÒÔ½â¾öºÜ¶àÎÊÌâ¡£Ëæ×Ÿ÷¸öÄ£¿éÒª´¦ÀíÔ½À´Ô½¶àµÄÈÎÎñ£¬ÔÙÒªÔö¼ÓÀàËÆ¸ú×Ù°ÑÊý¾Ý´«Èë×ÓÄ£¿éÕâÀà¶îÍâµÄÈÎÎñ¾Í»á±äµÃ¸´ÔÓ¡£µ±²»ÄܰѴ«ÊäÊý¾ÝµÄ¸ºµ£½»¸øÍⲿÊý¾Ý¿âʱ£¬Î¬»¤´óÐÍAngular³ÌÐòʱ±£³ÖÍ·ÄÔÇåÐѾͺܱØÒªÁË¡£
ÔÚÉÏÃæµÄÀý×ÓÀһ¸öÍⲿÊý¾Ý¿â£¨Í¼ÖÐûÓл³öÀ´£©¿ÉÒÔÓÃÀ´°ÑÐÅÏ¢´«¸øSidebarComponent£¬±íʾÓжàÉÙÆÀÂÛ¿ÉÓ㬡°ÓÐÁ½ÌõÆÀÂÛ¡±£¬Í¬Ê±»¹°ÑÕæÊµµÄÆÀÂÛÄÚÈÝ·¢¸øCommentListÄ£¿é¡£ÕâЩÊý¾ÝÍêÈ«ÈÆ¹ýÁ˸¸Ä£¿éAppComponent¡£
¿ìËٻعËÒ»ÏÂAngularµÄÄ£¿éͨÐÅ»úÖÆ
¶Á¹ýÉÏÎÄ£¬ÎÒÃÇÒѾ¶ÔAngularµÄÄ£¿éÖ®¼äÈçºÎͨÐÅÓÐÁËһЩÁ˽⡣ÎÒÃÇÖªµÀÁËÔõÑù°ÑÊý¾Ý´ÓÒ»¸ö¸¸Ä£¿é´«ÈëÒ»¸ö×ÓÄ£¿é£¬¶øÇÒÎÒÃÇÒ²ÖªµÀÁËÔõôʹÓÃAngularµÄ@Input()ÃèÊö·û¡£
ÎÒÃÇÒ²ÖªµÀÁËÔõÑùʹÓÃ@Output()ÃèÊö·û£¬ÒÔ¼°ÈçºÎʹÓÃEventEmitterÀ´°ÑÊý¾Ý´ÓÒ»¸ö×ÓÄ£¿é·¢»Ø¸øÒ»¸ö¸¸Ä£¿é¡£
³ý´ËÖ®Í⣬µ±Ó¦ÓóÌÐò¹æÄ£Ôö³¤Ö®ºó£¬ÎÒÃÇÒ²ÖªµÀÁËÈçºÎÓÃngrxÀ´¼õÇḸ×Ó¹ØÏµµÄѹÁ¦¡£Í¨¹ýʹÓÃÒ»¸öµ¥¶ÀµÄÊý¾Ý¿â£¬ÎÒÃǾͿÉÒÔÈø÷¸öÄ£¿é×Ô¼º»ñÈ¡Êý¾Ý£¬¶ø²»±ØÍ¨¹ý¶à²ã×ÓÄ£¿é¾ÓÖд«µÝÀ´°ÑÊý¾Ý´«µ½ÕæÕýµÄÄ¿µÄµØÈ¥¡£Õâ¾ÍÈÃά»¤´ó¹æÄ£Ó¦ÓóÌÐò±äµÃÈÝÒ×ÁË¡£ÕâЩÔÀíÒ²ÊÊÓÃÓÚReactÖ®ÀàµÄ¿â£¬ËûÃÇÒ²Ó÷dz£ÀàËÆµÄ°ì·¨½â¾öÁËÏàͬµÄÎÊÌâ¡£
Äã¿ÉÒÔÔÚÕâ¸öÁ´½ÓÉÏ¿´µ½ÎÒÃǵÄÑÝʾ³ÌÐòÊÓÆµ£¬ÏàÓ¦µÄ´úÂëÒ²¿ÉÒÔÔÚÕâÀïÏÂÔØ¡£
ÈçºÎ½øÒ»²½Ñ§Ï°
Èç¹ûÄãÓÐÐËȤ¶ÔAngularÁ˽âµÃ¸ü¶àЩ£¬ÇëÒ»¶¨¿´¿´Code SchoolµÄ¡°Accelerating
through Angular 2¡±¿Î³Ì£¬ÔÙ¿´¿´Gregg PollackºÍÎÒ×Ô¼ºµÄ¡°build an
Angular 2 app with component interaction & routing¡±¿Î³Ì£¨½ö¹©Code
School»áԱѧϰ£©¡£
ÁíÍ⣬¿ÉÒÔÔÙ¿´¿´Angular¹ØÓÚÄ£¿é½»»¥µÄÎĵµ£¬½øÒ»²½Á˽âµ×²ã»úÖÆ£¬ÒÔ¼°Ëæ×Å¿ò¼ÜµÄ¿ìËÙÑݽø£¬×îеÄÓï·¨ºÍ×î¼Ñʵ¼ù¡£
×îºó£¬ÄãÒ²¿ÉÒÔÔÙ¶Á¶Ángrx¹Ù·½ÍøÕ¾ÉϵÄngrxÎĵµ£¬»òÕßÔÚÕâÀï¿´¿´ÎÒÓÃngrx¹¹½¨µÄÒ»¸öʾÀý³ÌÐò¡£ |