6

I'm trying to remove a navbar based on the current location path.

This is what I have so far:

angular.module('myModule')
  .controller('MainController', function ($location, $document) {
    if ($location.path().indexOf('resetpass') > -1) {
      var navbar = angular.element($document.querySelector(".top-navbar"));
      navbar.remove();
    }
  });

With this approach the console says:

angular.js:14110 TypeError: $document.querySelector is not a function
at new <anonymous> (main.controller.js:6)
at Object.invoke (angular.js:4762)
at $controllerInit (angular.js:10518)
at nodeLinkFn (angular.js:9416)
at compositeLinkFn (angular.js:8757)
at compositeLinkFn (angular.js:8760)
at publicLinkFn (angular.js:8637)
at angular.js:1808
at Scope.$eval (angular.js:17913)
at Scope.$apply (angular.js:18013)

What am I doing wrong?

3 Answers 3

5

use ngIf in your DOM element and do something like this:

Template :

<element ng-if="hideElemet"></element>

Controller :

if ($location.path().indexOf('resetpass') > -1) {
      $scope.hideElement = false
}

ngIf will remove the element from the DOM

Sign up to request clarification or add additional context in comments.

Comments

3

Try with document, not $document.

var navbar = angular.element(document.querySelector(".top-navbar")).remove();

2 Comments

..the console error is gone, but the navbar is still visible.
still visible after you execute navbar.remove(); ?
0

I feel like Ze Rubeus way of hiding the navbar makes more sense, but if you want to continue with what you have this should work:

angular.module('myModule')
 .controller('MainController', function ($location, $document) {
   if ($location.path().indexOf('resetpass') > -1) {
     var navbar = angular.element($document[0].querySelector(".top-navbar"));
     navbar[0].remove();
   }
});

Angular wraps all of it's DOM elements, so to access the element directly you need to grab the first element.

1 Comment

..don't know why, but it won't work. I go with the approach of Ze Rubeus..

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.