Reputation: 35
Trying to implement a three bar menu icon that turns into an "X" when clicked. Not sure why toggle is undefined. Can someone please explain where I have been going wrong?
from app.component.ts:
import { Component} from '@angular/core';
@Component({
selector: 'app-root',
template: `
<body>
<div class ='bg'> <br>
<div class='interactivemenu' (click)="cool(this)">
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
<div id='menubar'>
<ul class='menu'>
<li><a class='nav-link' routerLinkActive='active' class="menu" id='home' [routerLink]="['/home']">Home</a></li>
<li><a class='nav-link' routerLinkActive='active'class="menu" id='resume' [routerLink]="['/resume']">Resume</a></li>
<li><a class='nav-link' routerLinkActive='active' class="menu" id='projects'[routerLink]="['/projects']">Projects</a></li>
<li><a class='nav-link' routerLinkActive='active' class="menu" id='about'[routerLink]="['/about']">About </a></li>
<li><a class='nav-link' routerLinkActive='active' class="menu" id='contact'[routerLink]="['/contact']">Contact </a></li>
</ul>
</div><br>
<div id='slideshow'> SLIDESHOW</div>
<div class='container'>
<router-outlet></router-outlet>
</div>
<div id= 'footer'>
<a href='http://www.instagram.com'> <img src= './assets/instagram-vector-png--400.png' alt='instagram'></a>
<a href='http://www.twitter.com'> <img src= './assets/Twitter_Social_Icon_Rounded_Square_Color.png' alt='twitter' class="twitter"></a>
<a href='http://www.facebook.com'><img src= './assets/f_logo_RGB-Hex-Blue_512.png' alt='facebook' class="facebook"></a>
</div>
</div>
</body>
`,
styleUrls: ['./app.component.css']
}
)
export class AppComponent {
pageTitle = "Practice";
cool (x:any){
x.classList.toggle("change");
}
}
Upvotes: 0
Views: 698
Reputation: 2171
You'll probably want to avoid modifying the DOM at all possible. In addition, it'll be easier to detect and react to these changes using ngClass.
Give this a try:
@Component({
selector: 'app-root',
template: `
<body>
<div class='bg'><br>
<div class='interactivemenu' (click)="toggleMenu()" [ngClass]="[{'change': menuActive}]">
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
<!-- the rest of your page -->
</div>
</body>
`,
styleUrls: ['./app.component.css']
}
)
export class AppComponent {
public pageTitle = 'Practice';
public menuActive: boolean = false;
public toggleMenu() {
this.menuActive = !this.menuActive;
}
}
Upvotes: 1